System.Drawing.Graphics.DrawImage将一个图像粘贴到另一个图像上。但是我找不到透明度选项。

我已经在图像中绘制了所有想要的东西,我只想使其半透明(alpha透明度)

最佳答案

没有“透明”选项,因为您要执行的操作称为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;
    }
}

Alpha Blending

关于.net - 如何使System.Drawing.Image半透明?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2201016/

10-10 22:15