Как очистить элемент управления изображением в WPF (C #) - PullRequest
4 голосов
/ 13 апреля 2010

У меня есть элемент управления изображением с исходным изображением, находящимся на моем диске 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 ]

1 голос
/ 13 апреля 2010

Попробуйте установить растровое изображение через свойство потока источника. Таким образом, приложение не будет блокировать файл, поскольку вы загрузили его через поток.

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

0 голосов
/ 24 мая 2019

// эта функция позволяет вам загрузить изображение из файла и выпустить его

 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;
    }
...