Все производные классы Drawing
имеют гораздо меньший вес, так как в основном они просто визуализируют примитивы.На самом деле они ничего не делают, кроме как определяют область, в которой они будут нарисованы.
Когда вы используете классы, полученные из Shape
, все объекты должны регистрироваться для обработки событий и работать как частьСтандартная система компоновки, а также обрабатывать все свои рендеринг.Это не оказывает большого влияния на несколько объектов, но по мере добавления дополнительных элементов макеты и обработка событий действительно могут оказать значительное влияние на общую производительность.
Я хочу знать, сколько этоснижение производительности и является ли оно главным образом из-за класса FrameworkElement в иерархии производных классов?
Почти все это - тот факт, что он происходит от FrameworkElement
, означает, что Shape
для обработки всего макета, обработки событий и рендеринга, что является причиной того, что он медленнее.
И какой порог, после которого следует принять решение об использовании Visual вместо Shape?И каковы плюсы и минусы потери UIElement и FrameworkElement в цепочке?
Измерьте и посмотрите, где находится порог для вас ... Многое зависит от того, что вы делаете, и каквы используете эти типы.
Хорошим ресурсом для получения более подробной информации является раздел Чертежи и формы страницы Оптимизация производительности WPF на MSDN.