【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

相关推荐
.小墨迹2 天前
Apollo学习——键盘控制速度
linux·开发语言·c++·python·学习·计算机外设
binggoling2 天前
实用工具:微软软件PowerToys(完全免费),实现多台电脑共享鼠标和键盘(支持window系统)
microsoft·计算机外设·电脑
push_2 天前
罗技无线鼠标的配对方法
计算机外设
Despacito0o4 天前
QMK键盘固件自定义指南 - 打造你的专属键盘体验
c语言·计算机外设·qmk
曾经的你d4 天前
【electron+vue】常见功能之——调用打开/关闭系统软键盘,解决打包后键盘无法关闭问题
vue.js·electron·计算机外设
南国樗里疾5 天前
Android 13 默认打开 使用屏幕键盘
计算机外设
Despacito0o5 天前
RGB矩阵照明系统详解及WS2812配置指南
c语言·线性代数·矩阵·计算机外设·qmk
skywalk81635 天前
在一个FreeBSD的控制台,当移动鼠标时,就会有字符发生,这是怎么回事:35;62;18m35;60;
服务器·计算机外设·freebsd
java干货5 天前
每日Prompt:品牌化键盘键帽
计算机外设·prompt
小虎卫远程打卡app6 天前
视频编解码学习三之显示器续
学习·计算机外设·视频编解码