代码之家  ›  专栏  ›  技术社区  ›  Agnel Kurian

如何在.NET中使用编程设置的alpha通道绘制图像?

  •  3
  • Agnel Kurian  · 技术社区  · 16 年前

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

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

    2 回复  |  直到 16 年前
        1
  •  4
  •   Agnel Kurian    16 年前
        2
  •  2
  •   EricSchaefer    16 年前

    我会尝试创建第二个透明度为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 );
    

    作品这样,您也可以使图像的部分透明。。。

    推荐文章