PictureBox和Dispose

时间:2013-04-17 18:53:06

标签: c#

我必须删除一个图像文件(如果它已经存在(覆盖它),而PictureBox显示相同的文件。 但是,如果我尝试删除该文件,则会被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

1 个答案:

答案 0 :(得分: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属性保存图像