在默认情况下,程序都是相对于客户区的左上角,以像素为单位绘图的。
“映射方式”是一种几乎影响任何客户区绘图的设备描述表属性。
另外有4种设备描述表属性——窗口原点、视口原点、窗口范围和视口范围——与映射方式密切相关。
GDI 绘图函数中需要的传入的坐标值使用的都是一种“逻辑单位”。Windows 必须将逻辑单位转换为“设备单位”,即像素。这种转换方式由映射方式、窗口和视口原点,以及窗口和视口的范围所控制的。
Windows 定义了8种映射方式:
|
|
增加值 |
映射方式 |
逻辑单位 |
X值 |
Y值 |
MM_TEXT |
像素 |
右 |
下 |
MM_LOMETRIC |
0.1 mm |
右 |
上 |
MM_HIMETRIC |
0.01 mm |
右 |
上 |
MM_LOENGLISH |
0.01 in. |
右 |
上 |
MM_HIENGLISH |
0.001 in. |
右 |
上 |
MM_TWIPS |
1/1440 in. |
右 |
上 |
MM_ISOTROPIC |
任意(x = y) |
可选 |
可选 |
MM_ANISOTROPIC |
任意(x != y) |
可选 |
可选 |
设置映射方式:
SetMapMode(hdc,iMapMode);
iMapMode 是8个映射方式标识符之一。
获取当前的映射方式:
iMapMode = GetMapMode(hdc);
默认映射方式为 MM_TEXT。在这种方式下,逻辑单位与物理单位(也叫设备单位)相同,这样就可以直接以像素为单位进行操作。
示例:
// MM_TEXT 映射方式下:
TextOut(hdc,8,16,TEXT("Hello"),5);
// 文本从距离客户区左端8像素、上端16像素的位置处开始。
// MM_LOENGLISH 映射方式下:
TextOut(hdc,50,-100,TEXT("Hello"),5);
// 文本从距离客户区左端0.5英寸、上端1英寸的位置处开始。