WPF tabswitch / render занимает слишком много времени - PullRequest
1 голос
/ 21 декабря 2010

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

Проблема в том, что, если я переключаюсь на другую вкладку и возвращаюсь, требуется еще 2,3 секунды, чтобы снова отобразить вкладку с рисованием. Поскольку перерисовка отсутствует, почему это занимает так много времени?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2010

Другое возможное решение: вы на самом деле не объясняете, каким образом вы взаимодействуете с элементами, но если все, что вам нужно, это масштабирование и панорамирование, RenderTransform может быть достаточно хорошим (что более эффективно, чемLayoutTransform и / или перемещение всех элементов по отдельности).Я не играл с комбинацией Freeze() и RenderTransform, но вы можете получить желаемое увеличение при уменьшении количества макетов, необходимых WPF.

0 голосов
/ 21 декабря 2010

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

Не все объекты могут быть заморожены.Обратитесь к документации MSDN для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/ms750509.aspx

Еще одна вещь, которую вы могли бы попробовать, - это отрисовать векторную графику и отобразить ее.Может быть, это вызывает у вас чувство неприязни к потере точности векторов, но если вы знаете, что она не изменится и будет выглядеть одинаково, что в этом плохого?(Если вы поддерживаете печать или что-то, для чего потребуется версия высокого разрешения, вы всегда можете переключиться обратно для этой операции.) Для получения информации о том, как преобразовать UIElement в растровое изображение, посмотрите: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

...