Отслеживание когда рендеринг элемента управления - PullRequest
0 голосов
/ 21 октября 2011

Моя конечная цель - рисовать обновленную RenderTargetBitmap каждый раз, когда конкретный элемент управления отображает любые обновления, которые будут отправлены в COM-объект и визуализированы в другом приложении.

Я пытаюсь подключиться к любому событию, которое сообщит мне об обновлении элемента управления или любого из его дочерних элементов. Мой элемент управления представляет собой сочетание полей текста и изображения с привязкой к данным и градиентов, к которым применены ColorAnimations.

Есть ли способ узнать, что визуальный контроль (и его дети) изменились? Я пытался слушать OnVisualChildrenChanged, ArrangeOverride, ParentLayoutInvalidated и OnRender, нет из которых запускаются, когда отображается дочерний объект с привязкой к данным.

Первоначально предполагалось просто прослушать поля данных в объекте INotifyPropertyChanged, однако ColorAnimation означает, что все кадры элемента управления не будут должным образом захвачены.

1 Ответ

1 голос
/ 23 декабря 2011

Вы можете подключиться к d3d, который используется WPF "трудным путем".Но так как вы ищете какой-то прямой путь прямо из своего кода C #, я наткнулся на кое-что интересное.

Если я не ошибаюсь, это позволит вам очень просто подключиться к d3d-поверхности WPF и сообщать вам каждый раз, когда она рендерится - так что вы можете захватывать только обновления.

http://msdn.microsoft.com/en-us/library/system.windows.media.compositiontarget.rendering.aspx

Отказ от ответственности: Никогда не пробовал, и последний раз, когда я пилотировал компилятор, давно -:)

(Will, Спасибо за ваш вклад в тестирование XSplit) * +1010 *

...