如何使用C#组合像图层的png图像数组?

时间:2011-07-24 20:02:00

标签: c# image png overlay layer

我有一个名为

的图像数组
image_<somenumber>_trans.png

所有这些图像都有透明区域。这个想法是当把一个放在彼此顶部时 它们会形成漂亮的图像。但我得到了一个奇怪的GDI +相关错误(“GDI +中发生了一般错误”) 我一直在发疯我现在使用的代码可以在下面查看;

number_of_photos = 30;
Bitmap temp = new Bitmap("background.png");//some white background 640x480 pixels
temp.Save("temp.png", ImageFormat.Png);
temp.Dispose();
for (int photo_no = 0; photo_no < number_of_photos; photo_no++)
{
    Bitmap temp1 = new Bitmap("temp.png");
    Graphics gra = Graphics.FromImage(temp1);
    Bitmap new_layer = new Bitmap("image_" + photo_no + "_trans.png");
    //the images image_<photo_no>_trans.png are also 640x480 pixels
    gra.DrawImage(new_layer,0,0);
    temp1.Save("temp.png");//error: A generic error occurred in GDI+.
    temp1.Dispose();
 }

我做错了吗?感谢您的帮助...

2 个答案:

答案 0 :(得分:1)

new Bitmap(filename)将锁定文件,直到您处置Bitmap 因此,您无法覆盖该文件。

答案 1 :(得分:1)

我的建议是只在整个过程完成后保存图像。

Image i = new Image(...)
Graphics g = Graphics.FromImage(i)
for(...)
{
    g.Draw(...)
}

i.Save(...)