我正在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
。
答案 0 :(得分:3)
您应该能够使用System.Drawing.Screen。*类在每个屏幕上设置多个窗口。请注意,您没有将每个窗口设置为最大化,而是设置适当大小的边框窗口。
另外 - 您可能想要记住多监视器设置的总界限可能并不总是一个矩形(如果您计划“联合”所有边界以创建跨越所有监视器的窗口)。