我创建了循环来从我的datagridviews创建图表图像。我个别地制作了每个图像,然后我将它们合并了
Image img = new Bitmap(1024, 1200);
Graphics g = Graphics.FromImage(img);
g.DrawImage(Image.FromFile("chart" + i + ".png"), new System.Drawing.Point(0, 100));
g.DrawImage(Image.FromFile("chart2" + i + ".png"), new System.Drawing.Point(0, 600));
img.Save("finalchart-" + i + ".png");
现在我想删除那些单独的图表,只留下" finalchart"。所以我又制作了一个删除单个图表的循环。
for (j = 1; j < columnCount; j++)
{
System.IO.File.Delete("chart" + j + ".png");
System.IO.File.Delete("chart2" + j + ".png");
}
但是当我开始我的程序时,我收到了这个错误:
该进程无法访问该文件 &#39; C:\用户\雾\桌面\程序\ aproximator \程序\程序\ BIN \调试\ chart3.png&#39; 因为它正被另一个进程使用。
有什么想法吗?感谢
答案 0 :(得分:0)
只要img
有引用,它就会保留在这些其他句柄上。只需在最后处理它:
Image img = new Bitmap(1024, 1200);
Graphics g = Graphics.FromImage(img);
g.DrawImage(Image.FromFile("chart" + i + ".png"), new System.Drawing.Point(0, 100));
g.DrawImage(Image.FromFile("chart2" + i + ".png"), new System.Drawing.Point(0, 600));
img.Save("finalchart-" + i + ".png");
img.Dispose(); // like one commenter mentioned