4

如果图像文件已经存在(覆盖它),而 aPictureBox显示相同,我必须删除它。但是,如果我尝试删除它被阻止的文件PictureBox。所以我写了以下代码:

if (File.Exists(file))
{
   Image _tmp = (Image)current_pic.Image.Clone();                 
   current_pic.Image.Dispose();
   current_pic.Dispose();
   File.Delete(path);
   current_pic.Image = _tmp;
   current_pic.Image.Save(file, ImageFormat.Jpeg);
}
else
   current_pic.Image.Save(file, ImageFormat.Jpeg); 

并且文件系统上的图像被删除,pic.Dispose()但图像没有更多地显示在PictureBox. 也许Dispose()方法无效PictureBox

4

1 回答 1

4

您可以在不锁定的情况下将图像读入图片框中,如下所示

Image img;
string file = @"d:\a.jpg";
using (Bitmap bmp = new Bitmap(file))
{
   img = new Bitmap(bmp);
   current_pic.Image = img;
}
if (File.Exists(file))
{
    File.Delete(file);
    current_pic.Image.Save(file, ImageFormat.Jpeg);
}
else
    current_pic.Image.Save(file, ImageFormat.Jpeg);

我已经更新了代码以支持保存操作。

而之前的代码即使在链接图像后也支持删除。流已关闭,并且在保存时导致 GDI+ 错误。

新更新的代码满足您的所有要求,如下所示

  • 允许在图像链接时删除文件
  • 使用 Picturebox 控件中的 Image 属性保存图像
于 2013-04-17T19:12:04.053 回答