BCB代码转C或C#

yjigeaigh 2009-09-12 02:52:01
刚刚开始学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
{
}
...全文
73 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjigeaigh 2009-09-14
  • 打赏
  • 举报
回复
没人帮忙吗~!~ 给我注释也可以。 谢谢了

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧