如何在OnRender中使用DrawingContext进行绘制工作?

时间:2012-03-01 16:00:26

标签: c# wpf drawingcontext

我正在WPF窗口中绘制一个相当复杂的“图像”(通常需要刷新并具有许多绘图基元),方法是重写单独的UIElement的OnRender方法并使用DrawingContext直接绘制基元。 / p>

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

有没有好的资源(除了显而易见的MSDN资源似乎无法启发我?

或者我完全错了?

感谢任何回答指向正确的方向。 [编辑:拼写]

1 个答案:

答案 0 :(得分:1)

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

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

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

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

我希望这能为你澄清事情。