WPF обновляет рисунок, похожий на Windows Forms? - PullRequest
3 голосов
/ 25 марта 2010

Итак, если у меня есть окно WPF, переместит ли другое окно поверх окна WPF, что заставит окно WPF выполнять тысячи перерисовок, как Windows Forms?

Мне интересно влияние использования векторов в этом случае, в отличие от всего, что основано на растровых изображениях, таких как оконные формы.

Ответы [ 2 ]

6 голосов
/ 25 марта 2010

Вы можете взглянуть на архитектуру WPF , чтобы получить представление о ее настройке.

Чтобы ответить на ваш конкретный вопрос: WPF использует систему рисования в сохраненном режиме. В частности, это означает, что любая необходимая перерисовка (которая может потребоваться) обрабатывается за кулисами без вашего вмешательства.

Для сравнения, GDI использует немедленный режим; то есть вы, по сути, пишете пиксели напрямую, и, если по какой-либо причине эти пиксели нуждаются в обновлении, вам необходимо выполнить повторную визуализацию.

WPF не обязательно на самом деле кеширует все - это зависит, помимо прочего, от операционной системы и доступности памяти. Тем не менее, если потребуется повторная визуализация, он будет использовать граф сцены, который вы предоставили в последний раз, чтобы сделать это; это прозрачно для программиста. Кроме того, несмотря на то, что он «использует» DirectX, это в основном означает, что он делает все возможное, чтобы использовать аппаратную поддержку, если она доступна и реализована для этой функции. Не все видеокарты и не все функции WPF полностью ускорены. Этот вопрос касается разграничения различных режимов рендеринга и связанных с этим последствий.

1 голос
/ 25 марта 2010

Рендеринг WPF обрабатывается совершенно иначе, чем Windows Forms. Он использует DirectX для рендеринга, поэтому рендеринг обычно имеет гораздо меньше проблем такого рода, чем Windows Forms.

(Это, однако, вызывает некоторые собственные проблемы - в частности, для видеокарты предъявляются более высокие требования к приличной производительности ...)

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