Производительность WPF при масштабировании большой сцены - PullRequest
1 голос
/ 12 марта 2010

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

У меня код работает нормально, но я замечаю, что когда я подхожу ближе, анимация увеличения (которая анимирует свойства ScaleTransform.ScaleX и ScaleTransform.ScaleY на родительском холсте) начинает немного дергаться, и рамка скорость страдает.

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

Сцена довольно большая, 1980х1024, это требование, которое нельзя изменить.

Текущий макет выглядит так:

<Canvas x:name="LayoutRoot">
  <Canvas x:Name="ContainerCanvas">
    <local:MyControl x:Name="c1" />
    <!-- numerous or ther controls and elements that compose the scene  -->
  </Canvas>
</Canvas>

Код, который увеличивает масштаб, просто анимирует RenderTransform ContainerCanvas, который, в свою очередь, масштабирует своих потомков, что дает желаемый эффект.

Однако, мне интересно, нужно ли мне поменять ContainerCanvas на ViewBox или что-то в этом роде? Я никогда прежде не работал с элементами управления ViewBox / Viewport в WPF, могут ли они мне помочь?

Плавное масштабирование является огромным требованием клиента, и я должен решить эту проблему.

Все идеи приветствуются

Большое спасибо

Mark

1 Ответ

0 голосов
/ 12 марта 2010

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

Очевидно, что это сглаживание может вызвать проблемы с производительностью. Вы играли с RenderOptions.SetBitmapScalingMode() для объекта изображения, который вы отображаете?
В этом случае вам, возможно, придется пойти на компромисс между скоростью / производительностью анимации масштабирования и качеством отрендеренного изображения.

Одним из возможных решений, о котором я думал, но еще не успел реализовать, было бы переключение в низкокачественный режим масштабирования растровых изображений во время анимации и переключение обратно на высокое качество в конце анимации. *

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