Windows 在WINGDI.H里定义了八种GDI映射模式:MM_TEXT、MM_LOMETRIC、MM_HIMETRIC、MM_LOENGLISH、MM_HIENGLISH、MM_TWITPS、MM_ISOTROPIC和MM_ANISOTROPIC。可使用SetMapMode(hdc, iMapMode)选择映射模式。
这八种映射模式分两类:前六种和后两种。第一类映射方式逻辑(ViewPort)坐标和物理(Window)坐标比例不能修改,而第二类可以。第一类出除了MM_TEXT模式Y轴正向向下,其他Y轴正向都向上,第二类坐标轴方向可随意改变。
MM_TEXT: 物理坐标单位为像素,和逻辑单位一样
MM_LOMETRIC、MMHIMETRIC、MM_LOENGLISH、MM_HIENGLISH、MM_TWITPS: 物理坐标单位为对应的长度单位,ViewPort与Window的比值表示单位物理单位内的像素个数。
MM_ISOTROPIC: 可以将X轴和Y轴上的单位长度像素个数映射相同,这样绘图时当矩形长宽相等时在设备上显示即为正方形。设置时,先调用SetWindowExtEx(hdc,cxWindow,cyWindow,NULL),再调用SetViewportExtEx(hdc,cxViewport,cyViewport,NULL)可以充分利用客户区空间。
MM_NOISOTROPIC: 当第一次设置该模式时会保持前一次的ViewPort和Window比例
其他相关函数:
GetMapMode(hdc)
SetViewportEx(hdc,x,y,NULL)
SetWindowEx(hdc,x,y,NULL)
PS:先简单记录,还是很难理解