WPF - Является ли RenderTargetBitmap лучше, чем изменение источника изображения? - PullRequest
1 голос
/ 30 ноября 2009

Я пытаюсь создать класс секвенсора PNG, который позволит мне изменить свойство ImageSrush ImageBrush с помощью анимации.

Проблема в том, что у меня есть около 150 файлов PNG для загрузки, и это действительно очень влияет на производительность, когда у меня есть несколько анимаций на экране.

Я немного прочитал о RenderTargetBitmap, а также WriteableBitmap, но я не уверен, как добиться значительного прироста производительности, потому что он мне действительно нужен.

В некоторых случаях я получаю 6fps, что явно неприемлемо.

В моем классе Sequencer я просто обновляю CurrentFrame DP, который изменяет свойство ImageSource ImageBrush.

Любые идеи о том, как увеличить производительность здесь?

1 Ответ

3 голосов
/ 01 декабря 2009

Шаг 1 загружает все ваши изображения заранее (желательно в фоновом потоке). У вас должны быть объекты BitmapImage, инициализированные с CacheOption = BitmapCacheOption.OnLoad. Возможно, вы уже делаете это, или это может не быть проблемой (кэш изображений по умолчанию).

Однако поток рендеринга также должен выполнить некоторую работу при изменении источника изображения. Если вы не отображаете изображение с исходным размером, это может быть проблемой, так как по умолчанию элемент управления Image использует высококачественный алгоритм масштабирования Fant. В этом случае вы можете повысить производительность, позвонив на Image. Низкое качество масштабирования на несколько порядков быстрее. Однако даже после этого еще есть немного работы. Если вы хотите получить максимально быструю анимацию, вы можете создать Image элемент управления для каждого кадра, затем наложить их все на одно и то же место и изменить, какой из них появляется сверху. Вы по-прежнему будете получать удар по потоку рендеринга, загружая все изображения, но фактическая анимация должна быть довольно быстрой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...