0

我正在使用 WPF,想知道是否有任何方法可以强制仅在软件模式下呈现特定的视觉效果。

例如,网格内很少有 Rectangle:

Rectangle rect1 = new Rectangle() { Width = ........};
Rectangle rect2 = new Rectangle() .........
......... rect3 .....
     .... rect4 ......

我希望 rect1 以软件模式呈现,而其他矩形(rect2、3、4)以硬件加速呈现。

有可能这样做吗?

谢谢。

4

1 回答 1

0

您可以在窗口或应用程序级别强制软件呈现,但不能针对同一容器中的特定元素。当您考虑如何通过 WPF 布局系统将元素组合在一起并从该组合状态呈现时,这是有道理的。想想如果它们重叠、部分透明等会发生什么。混合模式需要使用单独的 Hwnd 跳出布局系统,然后在操作系统级别管理渲染。

作为参考,可以使用以下方式设置应用程序级软件渲染:

RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;

各个窗口(Hwnds)可以设置:

HwndSource source = PresentationSource.FromVisual(myVisual) as HwndSource;
HwndTarget target = source.CompositionTarget;
target.RenderMode = RenderMode.SoftwareOnly;
于 2013-01-29T13:56:11.290 回答