zoukankan      html  css  js  c++  java
  • net中对多显示器的支持 转 武胜

    现在很多显卡都带有S端子,可以直接接到电视或投影仪(当然双头显卡或是用双显卡也可以)。
    winXp已经内置支持双显示器。装了双输出的显卡后在显示属性里会看到有二个监视器图标了。
    在第二个监视器上选中“将window桌面扩展到该监视器上”,就可以把第二个监视器当作第一个监视器的延伸来用了。
    例如二个监视器的分辨率都是1280*1024的话,那二个监视器加起来就有了2560*1024的桌面了。
    使用时也很方便,只要把窗口拖到另一个监视器中去就行了。
    这样可以在一个监视器上打开vs2005在另一监视器上打开msdn;或是在一个监视器上写程序另一个监视器上用pplive看世界杯。

    .net2.0在System.Windows.Forms.Screen类提供了对多监视器的支持(参见ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/CPref17/html/T_System_Windows_Forms_Screen.htm)。

    Collapse 图像 公共属性

     名称 说明
    Public property Static AllScreens 获取系统上所有显示器的数组。
    Public property BitsPerPixel 获取与数据的一个像素相关联的内存位数。
    Public property Supported by the .NET Compact= Bounds 获取显示的边界。
    Public property DeviceName 获取与显示关联的设备名称。
    Public property Primary 获取一个值,该值指示某个显示是否为主设备。
    Public property Static Supported by the .NET Compact= PrimaryScreen 获取主显示。
    Public property Supported by the .NET Compact= WorkingArea 获取显示器的工作区。工作区是显示器的桌面区域,不包括任务栏、停靠窗口和停靠工具栏。

    页首

    Collapse 图像 公共方法 (请参见 受保护的方法

     名称 说明
    Public method Supported by the .NET Compact= Equals 已重载。 已重写。 
    Public method Static FromControl Screen 中检索包含指定控件的最大部分的显示器。
    Public method Static FromHandle 检索包含该对象(被指定句柄所引用)的最大部分的显示器的 Screen。
    Public method Static FromPoint 检索包含指定点的显示器的 Screen。
    Public method Static FromRectangle 检索包含矩形的最大部分的显示器的 Screen。
    Public method Static GetBounds 已重载。 检索显示器的边界。
    Public method Supported by the .NET Compact= GetHashCode 已重写。 计算并检索对象的哈希代码。
    Public method Supported by the .NET Compact= GetType  获取当前实例的 Type。 (从 Object 继承。)
    Public method Static GetWorkingArea 已重载。 检索显示器的工作区。
    Public method Static Supported by the .NET Compact= ReferenceEquals  确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)
    Public method Supported by the .NET Compact= ToString 已重写。 检索表示此对象的字符串。


    有了这个类,在程序中控制使用双监视器就很简单了,只要将窗体的移到相应监视器的坐标范围就可以了。
    如下图,笔者用的是二个17寸LCD,主监视器分辨率用1280*1024,辅监视器放在右边,因为距离远了点所以分辨率用低了一档为1024*768。

    如要将窗体移到辅显示器上显示,只需一行代码:

    this.DesktopLocation=Screen.AllScreens[1].Bounds.Location;
    如果要在辅显示器上全屏显示:
    this.FormBorderStyle=FormBorderStyle.None;
    this.DesktopBounds=Screen.AllScreens[1].Bounds;

    笔者现在在开发的系统中就有一个子系统需要实现进入系统后在主监视器操作而在辅监视器上全屏播放视频。
    最初的方案是用一个商业软件,此软件可以在winxp中实现用二套鼠标键盘,二个用户登录后分别在二个监视器上工作,互不干扰。每次重启后都要用另一个用户登录进去播放视频,后来觉得这样太麻烦,找到资料好就自己写了个简单的播放器。在系统启动后自动在辅监视器上全屏播放视频。省去了每次要登录二个用户的麻烦。

  • 相关阅读:
    Springboot注解@Scheduled定时任务的使用
    Springboot整合WebSocket和RabbitMQ实现服务器消息推送
    Springboot集成WebSocket实现消息推送功能
    RabbitMq: 主题交换机的使用(Topic Exchange)
    Rabbitmq: @RabbitListener 和 @RabbitHandler 搭配使用
    RabbitMQ开启 mqtt 协议
    @Import的简单使用
    idea快速生成对应数据库的实体类
    HttpClient封装工具类
    TypeScript基本概念
  • 原文地址:https://www.cnblogs.com/zeroone/p/1719167.html
Copyright © 2011-2022 走看看