我正在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中的每个屏幕初始化一个:
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类所必需的。

最佳答案

您应该能够使用System.Drawing.Screen。*类在每个屏幕上设置多个窗口。请注意,您没有将每个窗口都设置为最大化,而是设置了适当大小的无边框窗口。

另外-您可能想记住,多监视器设置的总边界可能并不总是矩形(如果您计划“联合”所有边界以创建一个跨所有监视器的窗口)。

关于c# - WPF:多个屏幕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17859414/

10-08 20:32