2010-01-29 4 views
2

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

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

ответ

4

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

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

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

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

+0

Спасибо, это очень полезно. У меня была проблема с предварительной загрузкой, которую вы упомянули, поэтому BitmapCacheOption.OnLoad должен быть очень полезен. –

Смежные вопросы