首页 文章

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

提问于
浏览
0

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

例如,网格中的Rectangle很少:

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

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

有可能这样做吗?

谢谢 .

1 回答

  • 0

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

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

    RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
    

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

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

相关问题