映射模式
映射模式是设备描述的属性,用于确定从逻辑坐标值到设备坐标值的转换方式。
传送给CDC输出函数的是逻辑坐标值。设备坐标值是指窗口中相应的像素点位置。
例如:用dc.Rectangle(0, 0, 200, 100 ); 调用Rectangle函数时您不用告诉GDI:画一个200个像素点宽、100个像素点高的矩形,而是告诉他画一个200个单位宽、100个单位高的矩形。在默认映射模式MM_TEXT下,一个像素点恰恰相当于一个单位。但在其他映射模式中,逻辑单位被解释为不同的设备单位。如在MM_LOENGLISH映射模式中,一个逻辑单位相当于一英寸的百分之一。
SetWindowExt和SetViewportExt函数
SetWindowExt设定“窗口范围”;SetViewportExt设定“视口范围”。窗口的尺寸以逻辑单位计算,视口的尺寸以设备单位或像素点计算。当Windows对逻辑坐标值和设备坐标值进行相互转换是,使用一对公式,其中包含窗口逻辑尺寸(窗口范围)、实际尺寸(视口范围)以及坐标原点位置。一般说来,视口范围是画图所在窗口的大小(以像素点数目计算),而窗口范围是指以逻辑单位表示的窗口尺寸。 GetClientRect(&rect)返回以像素点表示的窗口尺寸。
小结:在设备坐标系中,距离长短以像素点数目来计量。设备上的(0,0)点始终在显示平面的左上角,x轴正向向右,y轴正向向下。逻辑坐标系则全然不同。原点可放在任一位置,并且随着映射模式的不同,x轴、y轴方向以及缩放比例因子(相当于一个逻辑单位的像素点数目)都会发生变化