C#程序删除图片问题


我写了一个C# winfrom小程序,通过openFileDialog控件上传图片到该项目中的image文件夹下,然后点击程序的上某个图片控件可以循环显示image下的图片(点击一次切换一张),现在我想通过窗口上的删除按钮,删除掉窗口图片控件所显现的图片对应image文件夹下的图片,却提示图片被程序所占用,无法删除,同时删除其他图片也不行,求各位高手给点方法。

编码 c#

verui 11 years, 11 months ago

不知道你的删除代码是怎么写的,你再删除的时候回收一下内存,比如:

   
  this.pictureBox.Image.Dispose();
  
this.pictureBox.Image = null;
System.GC.Collect();

如何还不行,你尝试一下将图片以流的方式加载:

   
  FileStream fs = new FileStream(entryPhoto, FileMode.Open);
  
Image img = Image.FromStream(fs);
fs.Close();

以流的方式加载后,这里提供给你两种强制删除的方法,你试试:

   
  //第一种方法,在要进行文件操作前将Image对象销毁.
  
PictureBox picbox;
if(picbox.Image!=null)picbox.Image.Disponse();

//第二种方法,就是在加载图像的时候用一种方法替代:

System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);
System.Drawing.Image bmp = new System.Drawing.Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp);
g.DrawImage(img, 0, 0);
g.Flush();
g.Dispose();
img.Dispose();

sanfack answered 11 years, 11 months ago

Your Answer