0

私は WPF を使用していますが、特定のビジュアルを強制的にソフトウェア モードでのみレンダリングする方法があるかどうか疑問に思っています。

たとえば、グリッド内の Rectangle はほとんどありません。

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

rect1 をソフトウェア モードでレンダリングし、他の四角形 (rect2,3,4) をハードウェア アクセラレーションでレンダリングします。

そうすることは可能ですか?

ありがとう。

4

1 に答える 1

0

ウィンドウまたはアプリケーション レベルでソフトウェア レンダリングを強制できますが、同じコンテナー内の特定の要素に対しては強制できません。これは、要素が WPF レイアウト システムによってどのように合成され、その合成状態からレンダリングされるかを考えると理にかなっています。それらが重なったり、部分的に透明になったりするとどうなるかを考えてみてください。ミキシング モードでは、OS レベルでレンダリングを管理する個別の 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 に答える