Страницы

Поиск по вопросам

вторник, 11 июня 2019 г.

WPF как очистить Source у Image Control

Мне нужно загружать картинку из бд и отображать ее на екране в контроле Image, после чего в определенном моменте мне нужно очищать Source тоесть путь к картинке что бы ее удалить и загрузить новую.
Свойство прибинденное к Source у Image:
private string photo; public string Photo { get { return photo; } set { photo = value; OnPropertyChanged("Photo"); } }
Очищаю путь к картинке и загружаю новую из бд:
// пытаюсь заставить сбросить путь Photo = null; // при попытке удаление вылазит ошибка "невозможно удалить так как используеться другим процесом" File.Delete(Environment.CurrentDirectory + "\\Photo.png"); // загрузка картинки з бд на форму if (SelectedVerstatOperator.Photo != null) { ImageLoadFromDataBase(SelectedVerstatOperator.Photo); }
Метод ImageLoadFromDataBase:
private void ImageLoadFromDataBase(byte[] image) { using (var ms = new MemoryStream(image)) { // создаю новую картинку var photo = System.Drawing.Image.FromStream(ms); // сохраняю ее на диск photo.Save(Environment.CurrentDirectory + "\\Photo.png"); // задаю путь к картинке для отображения в Image Photo = Environment.CurrentDirectory + "\\Photo.png"; } }
Как заставить Image оставить в покое картинку? Что бы я ее удалил


Ответ

Решил так. Сохраняю картинку с рандомным именем в папку Temp
private void LoadImageFromDataBase(byte[] image) { using (var ms = new MemoryStream(image)) { var photo = System.Drawing.Image.FromStream(ms); string randomFileName = Path.GetRandomFileName(); randomFileName = randomFileName.Replace(".", ""); var path = Environment.CurrentDirectory + "\\Temp\\" + randomFileName + ".png"; photo.Save(path); Photo = path; } }
А при закрыти программы удаляю папку Temp и заново создаю ее
string dir = System.Environment.CurrentDirectory + "\\Temp"; System.IO.Directory.Delete(dir, true); System.IO.Directory.CreateDirectory(dir);

Комментариев нет:

Отправить комментарий