Mam aplikację WPF, która pobiera migawkę z pliku wideo. Użytkownik może zdefiniować znacznik czasu, z którego ma zostać pobrany obraz. Obraz jest następnie zapisywany w tymczasowej lokalizacji na dysku, a następnie renderowany do elementu <image>
.Buforowanie obrazów WPF
Użytkownik powinien wtedy mieć możliwość wybrania innego znacznika czasu, który następnie zastąpi plik tymczasowy na dysku - powinno to być wyświetlone w elemencie <image>
.
Korzystanie Image.Source = null;
, mogę jasne plik obrazu z elementu <image>
, więc wyświetla spację zamiast. Jeśli jednak plik obrazu źródłowego zostanie nadpisany nowym obrazem (o tej samej nazwie) i załadowany do elementu , nadal będzie wyświetlany stary obraz.
używam następującą logiką:
// Overwrite temporary file file here
// Clear out the reference to the temporary image
Image_Preview.Source = null;
// Load in new image (same source file name)
Image = new BitmapImage();
Image.BeginInit();
Image.CacheOption = BitmapCacheOption.OnLoad;
Image.UriSource = new Uri(file);
Image.EndInit();
Image_Preview.Source = Image;
Obraz wyświetlany w elemencie <image>
nie zmienia, mimo że oryginalny plik został całkowicie zastąpiony. Czy jest tu problem z buforowaniem obrazu, o którym nie wiem?
Dzięki, dam tego spróbować :) To –
działało idealnie. Użyję 'FileStream's od teraz, gdy chcę uniknąć buforowania. Dzięki. –
Walczyłem z tym samym problemem. Dziękuję Ci! – Misiu