如何在WPF中清除图像控件(C#)

时间:2010-04-13 12:30:15

标签: c# .net wpf image controls

我有一个图像控件,其源图像位于我的c盘中。每当我尝试删除原始图像以动态更改原始图像时,我会收到一条消息,说明该图像正被另一个进程使用。如何从图像控件中释放图像以便能够将其删除。

我试过这个变种:

string path = ((BitmapImage)img.Source).UriSource.LocalPath;
img.SetValue(System.Windows.Controls.Image.SourceProperty, null);
File.Delete(path);

string path = ((BitmapImage)img.Source).UriSource.LocalPath;
img.Source = null;
File.Delete(path)

但这不起作用......

2 个答案:

答案 0 :(得分:1)

尝试通过流源属性设置位图图像。这样,自从您通过流加载文件后,应用程序就不会锁定文件。

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.streamsource(VS.85).aspx

答案 1 :(得分:0)

//此功能可让您从文件加载图像并释放图像

 BitmapImage loadPhoto(string path)
    {
        BitmapImage bmi = new BitmapImage();
        bmi.BeginInit();
        bmi.CacheOption = BitmapCacheOption.OnLoad;
        bmi.CreateOptions = BitmapCreateOptions.IgnoreImageCache;            
        bmi.UriSource = new Uri(path);
        bmi.EndInit();
        return bmi;
    }