BngThea 发表于 2017-7-31 15:31:09

《Windows SDK》025 GUI映射模式

一 核心知识点
* 映射模式
默认的映射模式下,坐标原点在客户区的左上角,x向右,y向下,与数学中习惯的坐标不一致,需要转化映射模式

映射模式决定了xy轴的方向以及逻辑单位到设备单位的转换方式(即实际输出时的尺寸)

可以使用 SetMapMode 和 GetMapMode 来修改或获取系统的映射模式


* 逻辑单位和设备单位
逻辑单位独立于设备,不关心设备的实际尺寸大小,只是面向用户,保证“所见即所得”即可

设备单位是当 Windows 需要将 GDI 输出到某个具体的物理设备时,必须将逻辑单位转换为设备单位(一般为像素)

两者通过系统的映射模式进行换算


二 新API函数
* SetMapMode(hdc, MM_LOMETRIC)
该函数用于设置指定设备环境的映射模式

第一个参数: 环境设备句柄
第二个参数: 选定的映射模式,可以说下列的某一种——
1 MM_TEXT         每个逻辑单位为1个像素,x向右,y向下(默认)
2 MM_LOMETRIC       每个逻辑单位为0.1mm,x向右,y向上
3 MM_HIMETRIC       每个逻辑单位为0.01mm,x向右,y向上
4 MM_LOENGLISH      每个逻辑单位为0.1inch,x向右,y向上
5 MM_HIENGLISH      每个逻辑单位为0.01inch,x向右,y向上
6 MM_TWIPS          每个逻辑单位为1/20个点,每个点为1/72inch,x向右,y向上
7 MM_ISOTROPIC      任意缩放比例,且x = y
8 MM_ANISOTROPIC    任意缩放比例,且x != y

* iMapMode = GetMapMode(hdc)
该函数获取当前设备环境的映射模式

返回值是SetMapMode函数第二个参数可选的某一个
页: [1]
查看完整版本: 《Windows SDK》025 GUI映射模式