Dot-Net

如何使 System.Drawing.Image 半透明?

  • August 8, 2016

System.Drawing.Graphics.DrawImage將一張圖像粘貼到另一張圖像上。但我找不到透明度選項。

我已經在圖像中繪製了我想要的所有東西,我只想讓它半透明(alpha-transparency)

沒有“透明度”選項,因為您嘗試做的是稱為 Alpha 混合。

public static class BitmapExtensions
{
   public static Image SetOpacity(this Image image, float opacity)
   {
       var colorMatrix = new ColorMatrix();
       colorMatrix.Matrix33 = opacity;
       var imageAttributes = new ImageAttributes();
       imageAttributes.SetColorMatrix(
           colorMatrix,
           ColorMatrixFlag.Default,
           ColorAdjustType.Bitmap);
       var output = new Bitmap(image.Width, image.Height);
       using (var gfx = Graphics.FromImage(output))
       {
           gfx.SmoothingMode = SmoothingMode.AntiAlias;
           gfx.DrawImage(
               image,
               new Rectangle(0, 0, image.Width, image.Height),
               0,
               0,
               image.Width,
               image.Height,
               GraphicsUnit.Pixel,
               imageAttributes);
       }
       return output;
   }
}

阿爾法混合

引用自:https://stackoverflow.com/questions/2201016