1

Windowsフォームアプリケーションをフルスクリーンにしてセカンダリモニターをブラックアウトする方法はありますか?それで、メインディスプレイはプライマリディスプレイにあり、他のすべてのモニターは完全に黒ですか?

4

3 に答える 3

4

現在アクティブな画面に関する情報を提供する Screen クラスを使用できます。

// Form myFrm
Rectangle r = new Rectangle();
foreach (Screen s in Screen.AllScreens)
{
   if ( s != Screen.CurrentScreen ) // Blackout only the secondary screens
         r = Rectangle.Union(r, s.Bounds);
}
myFrm.Top = r.Top;
myFrm.Left = r.Left;
myFrm.Width = r.Width;
myFrm.Height = r.Height;
myFrm.TopMost = true; // This will bring your window in front of all other windows including the taskbar
于 2012-06-18T22:12:38.727 に答える
1

考えられる 1 つの方法は、コンピューター上にあるモニターの数と、それらの相互のレイアウトを調べ、プライマリ ウィンドウを 0,0 に作成し、最大化して TopMost に設定することです。次に、他のディスプレイについても同じことを行い、コンピューターの各モニターの左上に対応する画面位置に配置します。

WinForms 環境でこれが役立つと私が考えることができる唯一のものは、テスト用に設計されたアプリです。アプリはデスクトップ全体 (タスクバーを除く。[スタート] メニューを無効にする必要があります) をカバーし、ユーザーがテスト プログラム以外は何も見られないようにします。これにより、最小限のパフォーマンス上の利点が得られます。

メイン ディスプレイ以外のすべてのモニターをブラックアウトするアプリのほとんどは、基本的に DirectX を使用して画面を直接 (グラフィックス カードへの下位レベル インターフェイスを介して) 制御しています。WinForms を使用してプログラムを作成している場合、DirectX を使用する場合よりも約 50 レベル高い抽象化になります。

于 2012-06-18T22:15:13.940 に答える