Быстрый WPF Image Control - PullRequest
       7

Быстрый WPF Image Control

2 голосов
/ 29 января 2010

Я ищу элемент управления изображением для WPF, который может быстро менять изображения. Встроенный WPF довольно медленный для размеров изображений, которые я использую (масштабируется). Мне нужно всего около ~ 3 FPS. Я подумал о переходе на WinForms и даже D3D, но я не уверен, что это лучший способ.

Может кто-нибудь предложить что-нибудь?

1 Ответ

4 голосов
/ 29 января 2010

Элемент управления Image WPF использует собственную подсистему «Windows Imaging» и Direct3D для выполнения всей своей грязной работы, поэтому при использовании с правильными параметрами он будет работать почти так же быстро, как и все, что вы найдете.

Я подозреваю, что проблема заключается в том, что ваши настройки заставляют Windows Imaging загружать изображение в полном разрешении, а затем Direct3D масштабировать его. Решение этой проблемы заключается в том, чтобы выполнить масштабирование при загрузке изображения, установив DecodePixelHeight и DecodePixelWidth на BitmapImage, который вы используете в качестве ImageSource.

Другой метод, который многие графические приложения используют для ускорения, - это предварительная загрузка изображений в фоновом режиме. Например, программа просмотра изображений Windows автоматически начинает загрузку следующего изображения, как только отображается текущее изображение.

Если вы предварительно загружаете изображения, рассмотрите возможность сделать это в отдельном потоке. Также убедитесь, что вы используете BitmapCacheOption.OnLoad при создании BitmapImage, иначе предварительная загрузка не произойдет (по умолчанию OnDemand).

...