2012-03-01 32 views
2

我正在通过重写单独的UIElement的OnRender方法并使用DrawingContext直接绘制基元来在WPF窗口中绘制相当复杂的“图像”(通常需要刷新并具有许多绘制基元)。如何在OnRender中使用DrawingContext进行绘制?

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

是否有良好的资源(除了已经不是好像能赐教明显的MSDN资源?

还是我得到的一切完全错了?

感谢您的任何答案,指着我正确的方向

回答

1

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

我已经挖掘了DrawingContext的来源,并且从我所知道的情况来看,它似乎正在将所有这些DrawXYZ命令使用一些低级别向导推送到队列中(队列本身由任意大小的结构组成,每个结构都包含一个特定的命令)。

WPF然后在另一个线程上处理这个队列,表示this问题中的呈现线程。我没有证实这一点,但我猜WPF使用StreamingContext来绘制它的所有图形。

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

我希望这可以为你澄清事情。

+0

非常感谢您,我已经怀疑这一点,但总是很高兴可以肯定。 – Daniel 2013-02-11 07:58:03

相关问题