Re: WPF - Shapes vs. DrawingVisual (производительность)
От: MxMsk Португалия  
Дата: 13.09.13 09:55
Оценка:
Здравствуйте, CyberSurfer, Вы писали:

CS>Я написал код, рисующий тысячу линий с помощью объектов Line, и код, рисующий тысячу линий с помощью объектов DrawingVisual поверх изображения. Сравнивая производительность обоих способов я не увидел никакой разницы. Прокрутка итоговой картинки происходит недостаточно гладко в обоих случаях. Почему лаг при прокрутке итоговой картинки одинаковый в обоих случаях и где производительность класса DrawingVisual?

Ты выделил следствие, забыв о причинах. А именно: it does not provide layout, input, focus, or event handling. Т.е. DrawingVisual не участвует во всей этой катавасии, не нужной для "просто картинки", в то время как Line — это полноценный FrameworkElement, который опрашивается на хит-тест, который генерит события а-ля MouseEnter и т.п.

Далее касательно рендеринга. Очевидно же, что Line нарисует только одну линию. А на DrawingVisual, на одном DrawingVisual, ты можешь нарисовать сколько угодно этих линий. Вот тебе и performance. Если еще обрезать заведомо невидимые линии, то есть производительность может подняться еще выше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.