Как создать образ пользовательского элемента управления WPF во время выполнения - PullRequest
5 голосов
/ 23 марта 2011

Я создал приложение WPF, в котором есть Canvas, в который я помещаю UserControls, который может быть перемещен и изменен в размерах пользователем (как в Windows-окне). Теперь я обнаружил, что это может быть очень медленно на старых компьютерах, что является проблемой.

В качестве решения я подумал о создании графики, показывающей UserControl, и показываю это при изменении / перетаскивании элемента управления, чтобы WPF не пересчитывал все элементы навсегда. Единственная проблема в том, что я понятия не имею, как создать это изображение.

Возможно, есть что-то вроде функции, которая делает это в .Net? Или как я мог сделать это самостоятельно?

Ответы [ 2 ]

6 голосов
/ 24 марта 2011

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

Проверкаout Получение растрового изображения из представления Control

Будьте осторожны с этим, так как вы можете столкнуться с проблемами, когда части элемента управления, которые вы пытаетесь визуализировать, не видны (возможно, в средстве просмотра с прокруткой)

0 голосов
/ 23 марта 2011

Приложения WPF действительно требуют довольно серьезного ворчания; особенно в графическом отделе и очень выиграет от наличия в системе приличной видеокарты. Даже тогда производительность приложений WPF (если они не были тщательно сконструированы) может оставить желать лучшего ...

Тем не менее, вы можете использовать FixedDocument для растеризации UserControl, а затем преобразовать его в GIF / JPG / PNG и поместить его вместо изменяемого элемента управления ... однако я ожидаю, что сам процесс будет медленнее или медленнее, чем ваши текущие проблемы с производительностью.

...