次の方法で共有


軽減策: WPF ウィンドウのレンダリング

Windows 8 以降で実行されている .NET Framework 4.6 では、マルチモニター シナリオで単一のディスプレイの外側に拡張すると、ウィンドウ全体がクリッピングなしでレンダリングされます。

インパクト

一般に、クリッピングなしで複数のモニター間でウィンドウ全体をレンダリングすることが想定される動作です。 ただし、Windows 7 以前のバージョンでは、2 番目のモニターでウィンドウの一部をレンダリングするとパフォーマンスに大きな影響があるため、WPF ウィンドウは 1 つのディスプレイを超えて拡張するとクリップされます。

Windows 8 以降のモニター間での WPF ウィンドウのレンダリングの正確な影響は、多数の要因に依存するため、正確には定量化できません。 場合によっては、特にグラフィックスを集中的に使用するアプリケーションを実行し、ウィンドウをまたぐモニターを持つユーザーにとって、パフォーマンスに望ましくない影響を与える可能性があります。 それ以外の場合は、.NET Framework バージョン間で一貫した動作が必要な場合があります。

緩和策

この変更を無効にして、WPF ウィンドウが 1 つのディスプレイを超える場合にクリッピングされるという、以前の動作に戻すこともできます。 このようにするには、次の 2 つの方法があります。

  • アプリケーション構成ファイルの <EnableMultiMonitorDisplayClipping> セクションに <appSettings> 要素を追加することで、Windows 8 以降で実行されているアプリでこの動作を無効または有効にすることができます。 たとえば、次の構成セクションでは、クリッピングなしでレンダリングを無効にします。

    <appSettings>
        <add key="EnableMultiMonitorDisplayClipping" value="true"/>
      </appSettings>
    

    <EnableMultiMonitorDisplayClipping>構成設定には、次の 2 つの値のいずれかを指定できます。

    • true: レンダリング中に境界を監視するウィンドウのクリッピングを有効にします。

    • false: レンダリング中に境界を監視するウィンドウのクリッピングを無効にします。

  • EnableMultiMonitorDisplayClipping プロパティをアプリの起動時にtrueに設定します。

こちらも参照ください