Windows默认的是MM_TEXT图形影射模式。当打印机与屏幕每页容纳相素数目不同时,如果在MM_TEXT模式下处理图形就会出现问题。
映射模式中又可分成以下3类:
1. MM_TEXT映射模式这种映射模式被称为"文本"映射方式,不是因为它对于文本最合适,而是轴的方向与读文本的方向一致。Windows提供了函数SetViewportOrg和SetWindowOrg用来设置视口和窗口的原点。缺省的窗口原点和视口原点均为(0,0),可以改变;缺省的窗口范围和视口范围均为(1,1),不可改变。
2. 度量映射方式MM_LOMETRIC、MM_HIMETRIC、MM_LOENGLISH、MM_HIENGLISH和MM_TWIPS将1个逻辑单位映射为固定的实际单位,其中1twip等于0.0176mm(1/1440英寸)。其他映射模式对应的物理单位参见表1。设置了映射模式以后,Windows自动设置了窗口及视口的范围,范围本身的值并不重要,但范围比是一个固定的值,对于MM_LOMETRIC,Windows计算范围比xViewExt/xWinExt=0.1mm中水平像素的点数。
3.自定义映射模式MM_ISOTROPIC和MM_ANISOTROPIC两种映射模式允许程序员设置自己的窗口和视口范围。MM_ISOTROPIC和MM_ANISOTROPIC的区别是所设置的x轴和y轴的的范围必须相同,而MM_ANISOTROPIC所设置的x轴和y轴的的范围可以不同。isotropi的意思是"在所有方向相同",anisotropic的意思正相反。自定义映射模式中窗口和视口的原点和范围都可以改变,程序员可以设置自己需要的映射模式。函数SetWindowExt和SetViewportExt用于改变窗口和视口的范围。下面的代码将1个逻辑单位映射成0.396mm(1/64英寸)。
处理图形较好的影射模式是MM_LOENGLISH。因此我们用下面这两行代码替换点刚才加入的代码:pDC->Rectangle(20,20, 220, 220);