【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

相关推荐
jllws13 天前
键盘实现输入的思路
计算机外设
不脱发的程序猿6 天前
STM32制作单手鼠标键盘
stm32·嵌入式硬件·计算机外设·usb·qmk
AntsData7 天前
用 12K+ 条亚马逊评论信号,定位机械键盘下一版该改什么
java·大数据·计算机外设
时间的情敌8 天前
Vue3 + Cesium 鼠标交互绘制多边形 / 线(贴地绘制,动态预览,Entity 实现)
计算机外设
小幂同学9 天前
鼠标左右键自动点击怎么设置?单击、双击与宏录制说明
计算机外设·鼠标连点器·连点器·点击器·自动点击器
摩尔芯创9 天前
一期一会 | 什么是抬头显示器(HUD)?
计算机外设
苏州福兰克9 天前
运行裸眼3D显示器对电脑显卡配置有什么要求?
3d·计算机外设·电脑
巧手打字通-一起来打字9 天前
怎么才能科学快速的学会电脑26键盘打字?
计算机外设·电脑·键盘
苏州福兰克11 天前
没有3D内容,裸眼3D显示器还能用吗?
3d·计算机外设
豪气的程序猿11 天前
Windows 11 外接键盘偶尔漏键?用键盘小鹿练习前先做双设备对照
计算机外设·电脑