Насколько снижается производительность, вызванная использованием производных объектов Shapes вместо визуальных производных объектов - PullRequest
4 голосов
/ 16 сентября 2011

При создании приложения для рисования или моделирования, содержащего тысячи фигур, рекомендуется использовать классы, производные от Visual (например, DrawingVisual), а не классы, полученные из Shape из-за снижения производительности.

Я хочу знать, насколько снижается производительность, и является ли она большей частью из-за класса FrameworkElement в иерархии производных классов? И каков порог, за которым нужно решить, используя Visual вместо Shape? И каковы плюсы и минусы потери UIElement и FrameworkElement в цепочке?

1 Ответ

7 голосов
/ 16 сентября 2011

Все производные классы Drawing имеют гораздо меньший вес, так как в основном они просто визуализируют примитивы.На самом деле они ничего не делают, кроме как определяют область, в которой они будут нарисованы.

Когда вы используете классы, полученные из Shape, все объекты должны регистрироваться для обработки событий и работать как частьСтандартная система компоновки, а также обрабатывать все свои рендеринг.Это не оказывает большого влияния на несколько объектов, но по мере добавления дополнительных элементов макеты и обработка событий действительно могут оказать значительное влияние на общую производительность.

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

Почти все это - тот факт, что он происходит от FrameworkElement, означает, что Shapeдля обработки всего макета, обработки событий и рендеринга, что является причиной того, что он медленнее.

И какой порог, после которого следует принять решение об использовании Visual вместо Shape?И каковы плюсы и минусы потери UIElement и FrameworkElement в цепочке?

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

Хорошим ресурсом для получения более подробной информации является раздел Чертежи и формы страницы Оптимизация производительности WPF на MSDN.

...