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