У меня есть сложный элемент управления WPF, который рисует много примитивов в OnRender (это похоже на карту). Когда небольшая часть его изменяется, я бы хотел только повторно выдать команды рендеринга для затронутых элементов, вместо того, чтобы запускать весь OnRender. Хотя я отлично справляюсь со своей функцией функции OnRender при изменении размера или что-то еще, это недостаточно быстро для подсветки примитивов на основе мыши.Возможно ли InvalidateVisual() для данной области вместо всего элемента управления WPF?
В настоящее время единственным способом, которым я знаю, как заставить обновление экрана, является вызов InvalidateVisual(). Невозможно отправить в грязную область прямоугольника, чтобы сделать недействительным.
Является ли самая низкая гранулярность композиции экрана WPF элементом пользовательского интерфейса? Нужно ли мне делать рендеринг примитивов в промежуточную цель, а затем использовать это свойство InvalidateVisual() для обновления на экране?
ли вы переопределить UIElement.OnRender рисовать все внутри UIElement, или же элемент по-прежнему имеют нормальные зрительные дети? –