EDIT
re: Ваш комментарий: Для начала ... мое изображение не черное и не прозрачное. Они черно-белые ... оба имеют непрозрачность 0,6f (60%), поэтому там, где есть черный на черном (> 100% черный) или белый на белом (> 100% белый), это выглядит хорошо, но для перекрытий у вас будет 60% смесь белого с черным, которая дает вам серый цвет ... что вы можете сделать, это создать 2 отдельных ImageAttributes и настроить непрозрачности отдельно, чтобы увидеть, можете ли вы получить ожидаемый результат (см. измененный код). Это будет по-другому, если ваши изображения имеют прозрачные участки.
взял код из здесь
Хитрость заключается в том, чтобы рисовать каждое изображение с прозрачностью, чтобы его можно было видеть сквозь друг друга. Не относится к иконкам, поэтому это должно работать для любого типа изображения. Вы можете ToBitmap()
ваши иконки в первую очередь, чтобы получить их в качестве объектов изображений 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);
}