编辑
回复:您的评论:对于初学者来说...我的形象是不是黑&透明。它们是黑色和白色......都设置为0.6f(60%)不透明度,所以在黑色(黑色为100%)或白色为白色(> 100%白色)的情况下,它看起来很好,但对于重叠你会有60%的白色黑色混合,它给你灰色的颜色......你可以做的是创建2个独立的ImageAttributes,并单独调整不透明度,看看你是否能得到预期的输出(参见改变的代码)。如果您的图片具有透明部分,则会有所不同。
采取了一些代码here
诀窍是用透明度,使它们能够相互可以看到绘制每个图像。不是特定于图标,所以这应该适用于任何图像类型。你可以首先将你的图标设为ToBitmap()
,将它们作为Image Objects afaik。
using(Image a = Image.FromFile("1.png"))
using(Image b = Image.FromFile("2.png"))
using (var bitmap = new Bitmap(200, 200))
using (var canvas = Graphics.FromImage(bitmap))
{
Rectangle r = new Rectangle(new Point(0, 0), new Size(200, 200));
ColorMatrix cmxPic = new ColorMatrix();
cmxPic.Matrix33 = 1.0f;
ImageAttributes iaPic = new ImageAttributes();
iaPic.SetColorMatrix(cmxPic, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
ColorMatrix cmxPic2 = new ColorMatrix();
cmxPic2.Matrix33 = 0.5f;
ImageAttributes iaPic2 = new ImageAttributes();
iaPic2.SetColorMatrix(cmxPic2, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
canvas.DrawImage(a, r, 0, 0, 200, 200, GraphicsUnit.Pixel, iaPic);
canvas.DrawImage(b, r, 0, 0, 200, 200, GraphicsUnit.Pixel, iaPic2);
canvas.Save();
bitmap.Save("output.png", ImageFormat.Png);
}
你只是想显示结果,或者实际上有另一个图标作为输出吗? – leppie 2010-04-08 12:34:48
好吧,最后是我想要显示结果。但我已经有办法显示一个图标对象排序。因此,对我来说,覆盖这两个图标的最简单方法是制作一个新的Icon对象,并将其传递到我现有的系统中。 (我不需要创建一个新的.ico文件) – demoncodemonkey 2010-04-08 12:37:24