这是使用C ++ / CLI的Windows窗体上的.NET应用程序。我有一个JPEG,我想在我的客户区绘制来表示一个对象。在某些情况下 - 比如当用户拖动对象时 - 我想用一些透明度绘制对象。
有哪些方法可以做到这一点?
答案 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 );
作品。这样你也可以只使图像的一部分透明......