【Delphi】中多显示器操作基本知识点

提要:

目前随着计算机的发展,4K显示器已经逐步在普及,笔记本的显示器分辨率也都已经超过2K,多显示器更是普及速度很快。本文介绍下Delphi中操作多显示器的基本知识点(Windows系统),这些知识点在使用屏幕截图,多显示器拼接大图等方面使必须的。这些知识点在其他语言中也是通用的。

一、名词解释:

1. 屏幕(Screen):

我们看到的多块显示器组成一个矩阵墙面,这个矩阵墙面就是一个屏幕,注意,屏幕物理位置摆放未必一定是矩阵墙面,也可以摆成各种位置,但是逻辑位置一定是矩阵模式。

2. 显示器(Monitor):

显示器就是组成屏幕(Screen)的一块块监视器(Monitor),习惯上叫显示器,其实就是监视器。早期的时候,由于没有屏幕拼接,电脑就配置一个监视器,所以习惯性的把显示器、监视器、屏幕都叫成显示器,实际上是有区别的。

3. 主显示器(Primary Monitor):

在所有组成屏幕的显示其中,必须有且只能有一个主显示器,这个主显示器的左上角坐标约定为(0,0),其余显示器根据和主显示器摆放的逻辑位置(注意是逻辑位置,不是物理位置,一般最好物理位置和逻辑位置一致,否则操作起来会出现左右手问题,极不方便)来决定左上角的坐标位置。

4. 桌面(DeskTop):

桌面是一个逻辑概念,就是整个屏幕的显示区域,是包含有Left、Top、Width、Height属性的矩形区域,但是这个矩形区域未必都有物理显示器。左面中主显示器的左上角一定是(0,0)。

5. 分辨率(Resolution ):

用来表示显示器显示区域大小的参数,用点阵(Pixel)多少来表示长和高Width和Height,例如:1920 X1080 表示水平可以显示1920个点阵,高度可以显示1080个点阵,以此类推。

二、图例说明:

1. 标准6显示器矩阵示例:

说明:

  • 黄色部分整体是整个屏幕区域(Screen)
  • 屏幕有六块显示器组成两排,每排3个显示器;
  • 左上角蓝色显示器为主显示器,还有其余5块显示器;
  • 假定每个显示器的分辨率为 1920 x 1080;

具体得到的参数如下:

整个屏幕的大小为:

width :1920 x 3 = 5760

height:1080 x 3 = 3240

每块显示器的坐标参数如下:

|----------|------|------|------|-------|
| 显示器 | left | top | wdth | heigh |
| 主显示器 | 0 | 0 | 1920 | 1080 |
| 显示器1 | 1920 | 0 | 1920 | 1080 |
| 显示器2 | 3840 | 0 | 1920 | 1080 |
| 显示器3 | 0 | 1080 | 1920 | 1080 |
| 显示器4 | 0 | 2160 | 1920 | 1080 |
| 显示器5 | 0 | 3240 | 1920 | 1080 |

1)获取屏幕中显示器数量代码:
Delphi 复制代码
uses
    Vcl.Forms;


 //获取显示器数量
 Count := Screen.MonitorCount;

 //判断显示器是否是主显示器  True表示主显示器,i是数量Count循环
 isPrimary := Screen.Monitors[i].Primary; 
2)获取桌面工作区域大小代码:
Delphi 复制代码
  x := Screen.DesktopRect.Left;
  y := Screen.DesktopRect.Top;
  w := Screen.DesktopRect.Width;
  h := Screen.DesktopRect.Height;

本例中执行结果为:

x : 0; y := 0; w : 5760 ; h : 3240

说明:

本例因为主屏幕在左上角位置,所有桌面左上角坐标为(0,0)

3)设置程序Form覆盖整个屏幕(不是整个显示器)
Delphi 复制代码
  // Self 表示 Form
  Self.Left := 0;
  Self.Top  := 0;
  Self.Width := Screen.DesktopWidth;
  Self.Height:= Screen.DesktopHeight;
 
注意:

整个屏幕的坐标系为无论主显示器在那个位置,左上角都是(0,0),width是所有最大并排显示器宽度之和,高度依然。

2. 非标准6显示器矩阵示例 1

说明:

  • 黄色部分整体是整个屏幕区域(Screen)
  • 屏幕有六块显示器组成两排,每排3个显示器;
  • 主显示器位移第二排的第二个,还有其余5块显示器;
  • 假定每个显示器的分辨率为 1920 x 1080;

具体得到的参数如下:

整个屏幕的大小为:

width :1920 x 3 = 5760

height:1080 x 3 = 3240

每块显示器的坐标参数如下:

|----------|-------|-------|------|-------|
| 显示器 | left | top | wdth | heigh |
| 主显示器 | 0 | 0 | 1920 | 1080 |
| 显示器1 | -1920 | -1080 | 1920 | 1080 |
| 显示器2 | 0 | -1080 | 1920 | 1080 |
| 显示器3 | 1920 | -1080 | 1920 | 1080 |
| 显示器4 | -1920 | 0 | 1920 | 1080 |
| 显示器5 | 1920 | 0 | 1920 | 1080 |

桌面工作区域大小:

x : -1920; y := -1080; w : 5760 ; h : 3240

相关推荐
李小白杂货铺3 小时前
显示器最佳分辨率设置
计算机外设·显示器·内置显示器·独立显示器·最佳分辨率
狂睡GG爆12 小时前
开放式耳机伤耳朵吗?分享四款不伤耳的开放式蓝牙耳机
计算机外设
有梦想的鱼19 小时前
杂牌鼠标侧键设置
计算机外设
wow2ok1 天前
天融信把桌面explorer.exe删了,导致开机之后无windows桌面,只能看到鼠标解决方法
windows·计算机外设
哲伦贼稳妥1 天前
一天认识一个硬件之显示器
经验分享·其他·计算机外设
培林将军2 天前
C51单片机-单按键输入识别,键盘消抖
单片机·嵌入式硬件·计算机外设
qq_406144492 天前
wincc利用拓展屏实现多台显示器显示单个项目配置方法详解
计算机外设
小锋学长生活大爆炸3 天前
【踩坑】装了显卡,如何让显示器从主板和显卡HDMI都输出
计算机外设·gpu·显卡·hdmi·外设
20岁30年经验的码农4 天前
java 鼠标点击和移动和键盘事件
java·开发语言·计算机外设
sensor_WU4 天前
【delphi】判断多显示器下,程序在那个显示器中
计算机外设·多显示器·程序在那个显示器上