【问题标题】:WPF event on re-draw重新绘制时的 WPF 事件
【发布时间】:2012-09-12 13:50:25
【问题描述】:

我有一些代码可以将 Canvas 的内容呈现为位图。 Canvas 的子元素会周期性地在视觉上发生变化,我需要一种方法来辨别这种情况何时发生,以便我可以重新绘制位图。我最初的想法是覆盖Canvas.OnRender,但是当孩子重新渲染时,这似乎没有被调用。

任何建议将不胜感激

【问题讨论】:

    标签: c# .net wpf events rendering


    【解决方案1】:

    请记住,WPF 不是基于帧重绘,而是更多地基于脏区域的概念。此外,OnRender 不像 OnPaint,它用于创建缓存表示来渲染实际内容,在大多数情况下,它不需要重新渲染来显示一些更改,这就是它不被调用的原因。要获得您想要的效果,您可以使用CompositionTarget.Rendering 事件。它可能是最接近绘画活动的地方。 但是有一个警告,当您附加到该事件时,渲染行为会发生一些变化,请检查this

    另一个想法可能是查看VisualBrush

    【讨论】:

    • 这个问题是它不断触发,而不是在检测到脏区域时触发。指示区域已被标记为脏的事件将是理想的。我注意到在 WPF 性能套件中可以突出显示脏区域,因此这些数据必须在某处可用...
    • 适当地使用 VisualBrush 和 Changed 事件。 Snoop 做了类似的事情。
    猜你喜欢
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2011-09-26
    相关资源
    最近更新 更多