【问题标题】:How does drawing with the DrawingContext in OnRender work behind the scene?在 OnRender 中使用 DrawingContext 进行绘图如何在幕后工作?
【发布时间】:2012-03-01 16:00:26
【问题描述】:

我通过覆盖单独的 UIElement 的 OnRender 方法并使用 DrawingContext 直接绘制图元,在 WPF 窗口中绘制了一个相当复杂的“图像”(通常需要刷新并具有许多绘图图元)。

我的问题是,幕后究竟发生了什么?据我了解,这不是使用保留模式(如果我将 Shapes 放入控件中就会出现这种情况)。我问这个问题是因为我担心这样的绘图实际上只会在后面使用 GDI+,这会带来自己的问题(例如,打印用 GDI+ 绘制的东西已经花费了我们的时间和精力)。

有没有什么好的资源(除了明显的 MSDN 资源似乎无法启发我?

还是我完全搞错了?

感谢任何为我指明正确方向的答案。 [编辑:拼写]

【问题讨论】:

    标签: c# wpf drawingcontext


    【解决方案1】:

    您仍在使用保留模式,只是没有使用高级对象(没有动画对象等),而是使用简单的点、线等。

    我已经深入研究了 DrawingContext 的来源,据我所知,它似乎正在使用一些低级魔法将所有这些 DrawXYZ 命令推入一个队列(队列本身由任意大小的结构组成,每个结构表示一个某些命令)。

    WPF 然后在另一个线程上处理这个队列,在this 问题中表示渲染线程。我还没有验证这一点,但我猜测 WPF 使用 StreamingContext 进行所有绘图。

    此外,WPF 正在使用 DirectX 进行渲染,正如this bogpost 所见,它可以更好地了解 WPF 的实际作用。

    我希望这可以为您澄清一些事情。

    【讨论】:

    • 非常感谢,我已经怀疑过这一点,但能确定总是好的。
    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多