我希望能够在图像上放置图像,但为叠加图像应用特定级别的透明度。
这是我到目前为止所做的:
private static Image PlaceImageOverImage(Image background, Image overlay, int x, int y, int alpha)
{
using (Graphics graphics = Graphics.FromImage(background))
{
graphics.CompositingMode = CompositingMode.SourceOver;
graphics.DrawImage(overlay, new Point(x, y));
}
return background;
}
非常感谢任何帮助。
答案 0 :(得分:2)
您可以使用ColorMatrix:
private static Image PlaceImageOverImage(Image background, Image overlay, int x, int y, float alpha)
{
using (Graphics graphics = Graphics.FromImage(background))
{
var cm = new ColorMatrix();
cm.Matrix33 = alpha;
var ia = new ImageAttributes();
ia.SetColorMatrix(cm);
graphics.DrawImage(
overlay,
// target
new Rectangle(x, y, overlay.Width, overlay.Height),
// source
0, 0, overlay.Width, overlay.Height,
GraphicsUnit.Pixel,
ia);
}
return background;
}
警告:alpha是一个浮点数(0 ... 1)
PS:我宁愿创建一个新的Bitmap并将其返回,而不是改变现有的Bitmap。 (并返回)>>> 它关于函数式编程。