记住,视窗或者视埠范围并不意味著要进行剪裁。在呼叫GDI函式时,您仍然对以随便地使用小於-1000和大於1000的x和y值。根据显示区域的外形,这些点可能看得见,也可能看不见。
在MM_ISOTROPIC映射方式下,可以使逻辑单位大於图素。例如,假设您想要一种映射方式,使点(0,0)显示在萤幕的左上角,y的值向下增长(和MM_TEXT相似),但是逻辑座标单位为1/16英寸。以下是一种方法:
SetWindowExtEx函式的参数指出了每一英寸中逻辑单位数。SetViewportExtEx函式的参数指出了每一英寸中实际单位数(图素)。
然而,这种方法与Windows NT中的度量映射方式不一致。这些映射方式使用显示器的图素大小和公制大小。要与度量映射方式保持一致,可以这样做:
在这个程式码中,视埠范围设定为按图素计算的整个萤幕的大小,视窗范围则必须设定为以1/16英寸为单位的整个萤幕的大小。GetDeviceCaps以HORZRES和VERTRES为参数,传回以毫米为单位的装置尺寸。如果我们使用浮点数,将把毫米数除以25.4,转换为英寸,然後,再乘以16以转换为l/16英寸。但是,由於我们使用的是整数,所以先乘以160,再除以254。
当然,这种座标系会使逻辑单