【发布时间】:2012-09-12 13:50:25
【问题描述】:
我有一些代码可以将 Canvas 的内容呈现为位图。 Canvas 的子元素会周期性地在视觉上发生变化,我需要一种方法来辨别这种情况何时发生,以便我可以重新绘制位图。我最初的想法是覆盖Canvas.OnRender,但是当孩子重新渲染时,这似乎没有被调用。
任何建议将不胜感激
【问题讨论】:
标签: c# .net wpf events rendering
我有一些代码可以将 Canvas 的内容呈现为位图。 Canvas 的子元素会周期性地在视觉上发生变化,我需要一种方法来辨别这种情况何时发生,以便我可以重新绘制位图。我最初的想法是覆盖Canvas.OnRender,但是当孩子重新渲染时,这似乎没有被调用。
任何建议将不胜感激
【问题讨论】:
标签: c# .net wpf events rendering
请记住,WPF 不是基于帧重绘,而是更多地基于脏区域的概念。此外,OnRender 不像 OnPaint,它用于创建缓存表示来渲染实际内容,在大多数情况下,它不需要重新渲染来显示一些更改,这就是它不被调用的原因。要获得您想要的效果,您可以使用CompositionTarget.Rendering 事件。它可能是最接近绘画活动的地方。 但是有一个警告,当您附加到该事件时,渲染行为会发生一些变化,请检查this。
另一个想法可能是查看VisualBrush。
【讨论】: