1. 映射模式的概念:
1) 也是DC的重要属性之一,它和绘图时的尺寸有关;
2) 在没有映射模式的时候绘图只能以像素点为单位长度进行绘图,但是这样做有一个明显的坏处就是,不同显示器分辨率、屏幕大小各不相同,在一个屏幕上画1000像素长的线很长,同样像素点的长度换到另一个屏幕上看上去却可能很短,这无法达到不同屏幕绘制的图形效果相同的目的,因此要引入映射模式这个功能来解决上述问题;
3) 映射模式规定,在利用GDI绘图的时候统一使用逻辑长度单位,然后通过某种方法(公式)将逻辑尺寸映射成实际物理屏幕的像素点长度,不同映射模式决定了一个逻辑单位代表多少个像素点长;
4) 映射模式的两个对象:
i. 逻辑坐标:即传递给绘图API函数的坐标值,是一种抽象、统一、设备无关的人为假定的坐标值;
ii. 设备坐标:即屏幕上的具体像素点坐标;
iii. 映射模式决定了如何从逻辑坐标转化成设备坐标,因为具体的物理设备只认识像素点位置这个东西,就好像计算机只认识01一样;
5) 映射模式属性的操作:SetMapMode、GetMapeMode,默认值是MM_TEXT,MM即MapMode的缩写,默认的MM_TEXT映射模式不做任何映射,逻辑单位1就代表1个像素点;
2. 常用的GDI映射模式:
1) 有了映射模式就可以选择诸如“一逻辑单位等于1厘米”之类的映射模式了,这样则在绘图时长度、尺寸等就和屏幕分辨率无关了,不同屏幕之间的调整完全都是自动的,MFC内部全部都实现了,比如在一块屏幕上一厘米等于100个像素点,而另一块屏幕上一厘米等于135个像素点,这这些映射工作MFC都在内部自动完成了,这样就可以实现按比例的缩放,并且与屏幕分辨率、大小无关;
2) 常用的映射模式:其中原点都是左上角,x轴都是朝右的
MM_TEXT:1 pixel / 1 lg,y+
MM_LOMETRIC:0.1 mm / 1 lg,y-</