В настоящее время я загружаю изображения последовательно в фоновой задаче и обновляю пользовательский интерфейс следующим образом:
Код: Выделить всё
while (!cancelToken.IsCancellationRequested)
{
cancelToken.ThrowIfCancellationRequested();
if (imageCounter > 359)
imageCounter = 0;
//_memoryMappedViewAccessor.ReadArray(0, imageData, 0, imageData.Length);
string path = $"{basePath}img{imageCounter++:D4}.raw";
frame = ImageHelper.LoadImageRaw(path, Size, Size);
await Application.Current.Dispatcher.InvokeAsync(() =>
{
_writeableBitmap.Lock();
_writeableBitmap.WritePixels(_rect, frame.Data, locStride, 0);
_writeableBitmap.Unlock();
ImageDisplay = _writeableBitmap;
_frameCounter.Count();
}, DispatcherPriority.Background, cancelToken);
}
Я также использовал изображения большего размера. 3000х3000. Это привело к снижению скорости в 4 раза (всего ~80 мс, 8 мс на загрузку данных), что, по крайней мере, кажется правдоподобным, учитывая относительный размер.
Кроме того, я заметил, что отображение изображений происходит намного быстрее при запуске приложения с помощью отладчик подключен.
Является ли такая производительность типичной для элемента управления WPF Image с большими изображениями? Или я делаю что-то не так в своем подходе (особенно потому, что подключение отладчика, кажется, ускоряет отрисовку изображения, что странно), которое можно оптимизировать для более быстрых обновлений?
Подробнее здесь: https://stackoverflow.com/questions/790 ... rge-images
Мобильная версия