首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PictureBox和Dispose

PictureBox和Dispose
EN

Stack Overflow用户
提问于 2013-04-18 02:53:06
回答 1查看 1.5K关注 0票数 4

PictureBox显示图像文件时,如果图像文件已经存在(覆盖它),我必须将其删除。但是,如果我试图删除该文件,它会被PictureBox阻止。所以我写了下面的代码:

代码语言:javascript
复制
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无效

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-18 03:12:04

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

代码语言:javascript
复制
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控件中的
  • 属性保存图像
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16067859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档