2013-03-21 2 views
11

Как WPF оптимизирует цикл компоновки/рендеринга в сильно изменчивом приложении?Как WPF оптимизирует цикл макета/рендеринга?

Например, представьте, что я дважды аннулирую пользовательский контроль подряд, будет ли он отображаться дважды? Существуют ли проблемы с производительностью, когда скорость обновления данных/свойств выше, чем основная ставка рендеринга?

ответ

7

Основываясь на моем опыте, я могу сказать, что он не будет отображать дважды, если он достаточно быстро. Я не уверен на 100%, но вот почему я так думаю:

У нас было очень тяжелое приложение (тысячи элементов управления), это был самолет-кабина, все в wpf, каждая кнопка, переключатель, экран были движимый жестом или мышью.

В кокпите было 10 000 пикселей на 10 000 пикселей, а также реализовано увеличение/уменьшение (с колесом мыши), панорамирование при нажатии правой кнопки мыши.

До оптимизации, это было очень лага, медленно, так что каждый шаг «Zoom», или «Pan» шаг занимает около 1 второй

Если я Увеличить 1 раз (Увеличенный * 1,2, например), он взял 1 во втором

Если я увеличил 10 раз (увеличение * 1.2 X 10), это не займет 10 секунд, это займет, вероятно, 2 секунды в зависимости от скорости, которую вы прокручиваете, и она не отображает каждый шаг масштабирования только последний ...

+0

Wow .... 10k x 10k ... с масштабированием и тысячами элементов управления ... это пользовательский интерфейс helluva. –

+1

Тип меня немного пугает, чтобы попасть в самолет ... – Charleh

+0

Этот кокпит используется только для базовой подготовки, для того, чтобы студент «переместился» в кабину, не имея реального, используемого в учебном классе, когда учитель объясняет панели, объясняет, что кнопка ведьмы делает это и то ... она не используется для полное моделирование – mlemay

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