BCB代码转C或C#

yjigeaigh yjigeaigh 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚刚开始学windows程序设计。
代码如下,希望有高手能帮忙解决。
BLENDFUNCTION blend ;
TPoint P ;
TSize S ;
int X, Y;
Graphics::TBitmap *TempBmpRGBA ;
byte Alpha ;
PRGBQuad Linia32 ;
PRGBQuad Linia32RGBA ;
Graphics::TBitmap *bmpRGBA = Form1->Image1->Picture->Bitmap;
try
{
TempBmpRGBA = new Graphics::TBitmap();
try
{
TempBmpRGBA->Width = bmpRGBA->Width;
TempBmpRGBA->Height = bmpRGBA->Height;
TempBmpRGBA->PixelFormat = pf32bit;
for( Y = 0 ;Y<TempBmpRGBA->Height;Y++)
{
Linia32RGBA = (PRGBQuad)bmpRGBA->ScanLine[Y];
Linia32 = (PRGBQuad)TempBmpRGBA->ScanLine[Y];
for( X = 0;X<TempBmpRGBA->Width;X++)
{
if( PtInRegion(Region, X, Y))
{
Alpha = 0;
}
else
{
Alpha = Linia32RGBA->rgbReserved;
}
Linia32->rgbRed = MulDiv(Linia32RGBA->rgbRed, Alpha, 255);
Linia32->rgbGreen = MulDiv(Linia32RGBA->rgbGreen, Alpha, 255);
Linia32->rgbBlue = MulDiv(Linia32RGBA->rgbBlue, Alpha, 255);
Linia32->rgbReserved = Alpha;
Linia32++;
Linia32RGBA++;
}
}

P = Point(0, 0);
S.cx = bmpRGBA->Width;
S.cy = bmpRGBA->Height;
blend.BlendOp = AC_SRC_OVER;
blend.BlendFlags = 0;
blend.AlphaFormat = AC_SRC_ALPHA;
blend.SourceConstantAlpha = 255;
UpdateLayeredWindow(Hnd, GetDC(0), NULL, &S,
TempBmpRGBA->Canvas->Handle, &P, 0,
&blend, ULW_ALPHA);
}__finally
{
delete TempBmpRGBA;
TempBmpRGBA = NULL;
}
}__finally
{
}
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
yjigeaigh
C++ 语言 65,214 成员 250,514 内容