WPF:多个屏幕

Posted

技术标签:

【中文标题】WPF:多个屏幕【英文标题】:WPF: Multiple screens 【发布时间】:2013-07-25 10:16:59 【问题描述】:

我正在 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();
    

请注意,要访问 Screen 类,需要导入到 System.Windows.Forms

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢,正是我需要的。

以上是关于WPF:多个屏幕的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF 样式中触发多个条件的正确方法是啥

具有多个视图的 WPF 桌面应用程序

c# wpf 多个textblock滚动字幕怎么实现?

WPF DevComponents Dock Control 不会填满屏幕

WPF 多屏时子窗口的屏幕位置问题

WPF 杂记