【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

相关推荐
驱动开发0071 天前
Windows_Hello_Configuration_Analysis Windows Hello 配置过程分析 setup包分析
windows·驱动开发·云计算·计算机外设·usb重定向
就是蠢啊1 天前
51单片机——TFTLCD显示器(一)
嵌入式硬件·计算机外设·51单片机
uuleaf2 天前
12款键盘练习打字小游戏:键盘练习游戏合集
游戏·计算机外设·编程打字
枫叶丹42 天前
【Qt开发】Qt事件(三)-> QMouseEvent 鼠标事件
c语言·开发语言·c++·qt·microsoft·计算机外设
科技每日热闻2 天前
光影为序,专业为纲丨飞利浦商用显示器&尼康共绘影像创作新图景
科技·计算机外设·生活
禾仔仔3 天前
USB MSC从理论到实践(模拟U盘为例)——从零开始学习USB2.0协议(六)
嵌入式硬件·mcu·计算机外设
无限大.4 天前
为什么键盘有“机械“和“薄膜“之分?——按键的触感革命
计算机外设
小果子^_^4 天前
div或按钮鼠标经过或鼠标点击后效果样式
前端·css·计算机外设
LCG米4 天前
蓝牙HID设备开发:基于英飞凌CY8CKIT-149实现CapSense触摸控制的PC键盘
计算机外设
YJlio5 天前
文件工具学习笔记(12.8):MoveFile 实战——重启后重命名/删除顽固文件
笔记·学习·计算机外设