如何在.NET中以编程方式设置alpha通道绘制图像?

时间:2009-08-15 05:53:01

标签: .net winforms image gdi+ alphablending

这是使用C ++ / CLI的Windows窗体上的.NET应用程序。我有一个JPEG,我想在我的客户区绘制来表示一个对象。在某些情况下 - 比如当用户拖动对象时 - 我想用一些透明度绘制对象。

有哪些方法可以做到这一点?

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

我会尝试创建50%透明度的第二张图片。作为System.Drawing.Bitmap,您可以获取并设置其像素(GetPixel,SetPixel):

Color pixelColor = bitmap.GetPixel(x,y);
Color transparentPixelColor = MakePixelTransparent(pixelColor);
bitmap.SetPixel(x,y,transparentPixelColor);

MakePixelTransparent()会在提供的颜色中设置alpha值(例如获取ARGB值,设置A字节并从新的Argb值中创建新颜色)。

多数民众赞成我会尝试(但我没有)...

修改: 出于好奇,我现在试了一下:

Bitmap bitmap = new Bitmap( "YourImageFile.jpg" );
bitmap.MakeTransparent();
for ( int y = 0; y < bitmap.Height; y++ ) {
    for ( int x = 0; x < bitmap.Width; x++ ) {
        Color pixelColor = bitmap.GetPixel( x, y );
        Color transparentPixelColor = Color.FromArgb( pixelColor.ToArgb() & 0x7fffffff );
        bitmap.SetPixel( x, y, transparentPixelColor );
    }
}
e.Graphics.DrawImage( bitmap, 10, 10 );

作品。这样你也可以只使图像的一部分透明......