代码之家  ›  专栏  ›  技术社区  ›  Andreas Niedermair

如何在画布上用透明度/alpha绘制图像

  •  6
  • Andreas Niedermair  · 技术社区  · 14 年前

    我漏掉了usings等。。。普通代码:

    var image = Image.FromFile(/* my magic source */);
    var bitmap = new Bitmap(image.Width, image.Height);
    var canvas = Graphics.FromImage(bitmap);
    var brush = new SolidBrush(/* my magic color */);
    canvas.FillRectangle(brush, 0, 0, image.Width, image.Height);
    canvas.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height));
    canvas.Save();
    bitmap.Save(/* my magic target */);
    

    我想画画 image 阿尔法55%开启 canvas 是一个.png文件,并使用透明度本身(注意:我不想 image.MakeTransparent() -它已经透明了,我只需要一些alpha效果)

    我怎样才能做到这一点?

    1 回复  |  直到 9 年前
        1
  •  16
  •   Javid    8 年前

    ColorMatrix cm = new ColorMatrix();
    cm.Matrix33 = 0.55f;
    ImageAttributes ia = new ImageAttributes();
    ia.SetColorMatrix(cm);
    canvas.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, ia);