3

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

有哪些可用的方法来做到这一点?

4

2 回答 2

4

这应该这样做:

:)

于 2009-08-15T06:11:05.833 回答
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 );

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

于 2009-08-15T06:10:29.077 回答