8

WPFでスクリーンセーバーを書いています。スクリーンセーバーは動作していますが、メイン モニターにしか表示されません。ユーザーが複数のディスプレイを使用している場合、追加のモニターに「ブラックアウト」またはグラフィックを描画する方法はありますか? 私はいくつかの検索を行いましたが、関連するものは見つかりませんでした。

アップデート

以下のananthonlineの回答から、次のウィンドウを使用して、非プライマリディスプレイで「ブラックアウト」効果を実現できました。

<Window x:Class="ScreenSaver.BlackOut"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Cursor="None" WindowStyle="None" ResizeMode="NoResize" Background="Black">
</Window>

App.xaml.cs次のプロセスを使用して、画面ごとに 1 つを初期化します。

foreach (Screen s in Screen.AllScreens)
{
    if (s != Screen.PrimaryScreen)
    {
        BlackOut blackOut = new BlackOut();
        blackOut.Top = s.WorkingArea.Top;
        blackOut.Left = s.WorkingArea.Left;
        blackOut.Width = s.WorkingArea.Width;
        blackOut.Height = s.WorkingArea.Height;
        blackOut.Show();
    }
}

クラスSystem.Windows.Formsにアクセスするには、へのインポートが必要であることに注意してください。Screen

4

1 に答える 1

3

System.Drawing.Screen.* クラスを使用して、各画面に複数のウィンドウを設定できるはずです。各ウィンドウを最大化するのではなく、適切なサイズの境界線のないウィンドウに設定することに注意してください。

また、マルチ モニター セットアップの境界の合計が常に四角形であるとは限らないことに注意してください (すべてのモニターにまたがるウィンドウを作成するためにすべての境界を「結合」する場合)。

于 2013-07-25T13:48:29.893 に答える