gpt4 book ai didi

c# - 使用 OnRender 中的 DrawingContext 绘图在幕后如何工作?

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:09 24 4
gpt4 key购买 nike

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

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

是否有任何好的资源(除了明显的 MSDN 资源似乎无法启发我?

还是我完全搞错了?

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

最佳答案

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

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

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

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

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

关于c# - 使用 OnRender 中的 DrawingContext 绘图在幕后如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com