【发布时间】:2012-11-13 14:25:13
【问题描述】:
我参考了一个名为 _frameworkElement 的 FrameworkElement
我需要在OnRender 事件的drawingContext 上绘制FrameworkElement。
像这样:
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext. ??
base.OnRender(drawingContext);
}
我需要考虑应用于 _frameworkElement 的任何渲染转换
这个问题有什么干净的解决方案吗? 谢谢
编辑
为什么我需要重写 OnRender:
由于我有一个图形应用程序,用户可以绘制形状,并使用可以绘制矩形选择区域的选择工具选择多个形状。
我所做的是将舞台画布中的选定形状重新设置为用户可以移动和调整大小的选择画布,在选择画布上进行转换后,用户将单击舞台画布,然后将形状重新设置为舞台画布的父级.
问题:
将子元素从 Canvas 移除到 Canvas 时存在瓶颈,Children.Remove & Children.Add 将花费时间来实现,特别是当用户选择大量形状进行变换时。
那么?
我认为不要重新设置选定形状的父级,而是通过覆盖 OnRender 在选择 Canvas 的绘图上下文上绘制它们
【问题讨论】:
-
你为什么要这样做?我想不出您需要在 WPF 中覆盖 OnRender() 的情况。请提供更多详细信息,说明您正在尝试做什么。
-
在某些情况下需要覆盖。我用它来绘制响应鼠标定位和事件的实时数据表示(如果你愿意的话,想象一下心脏 EKG)。这是一个有效的场景。但是,如果我们要帮助您实现目标,了解您需要完成的工作会很有帮助。 :)
-
请参阅上面的编辑以解释为什么我需要覆盖 OnRender()
标签: c# .net wpf frameworkelement