WPF强制特定视觉仅在软件模式下呈现

时间:2013-01-29 09:25:10

标签: wpf

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

例如,网格中的Rectangle很少:

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

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

是否可以这样做?

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;

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

HwndSource source = PresentationSource.FromVisual(myVisual) as HwndSource;
HwndTarget target = source.CompositionTarget;
target.RenderMode = RenderMode.SoftwareOnly;