现在,我们有了一个真正的4象限笛卡尔座标系,在x轴和y轴上有相等的按英寸、毫米或twip计算的逻辑单位。
您还可以使用SetWindowOrgEx函式来改变逻辑(0,0)点,但是这稍微困难一些,因为SetWindowOrgEx的参数必须使用逻辑单位,先要将(cxClient,cyClient)用DPtoLP函式转换为逻辑座标。假设变数pt是型态为POINT的结构,下面的代码将逻辑(0,0)点改变到显示区域的中央:
「自行决定」的映射方式
剩下的两种映射方式为MM_ISOTROPIC和MM_ANISOTROPIC。只有这两种映射方式可以让您改变视埠和视窗范围,也就是说可以改变Windows用来转换逻辑和装置座标的换算因数。「isotropic」的意思是「同方向性」;「anisotropic」的意思是「异方向性」。与上面所讨论的度量映射方式相似,MM_ISOTROPIC使用相同的轴,x轴上的逻辑单位与y轴上的逻辑单位的实际尺寸相等。这对您建立纵横比与显示比无关的图像是有帮助的。
MM_ISOTROPIC与度量映射方式之间的区别是,使用MM_ISOTROPIC,您可以控制逻辑单位的实际尺寸。如果愿意,您可以根据显示区域的大小来调整逻辑单位的实际尺寸,从而使所画的图像总是包含在显示区域内,并相应地放大或缩小。例如,第八章的两个时钟程式就是方向同性的例子。在您改变视窗大小时,时钟也相应地调整。
Windows程式完全可以通过调整视窗和视埠范围来处理图像大小的变化。因此,不管视窗尺寸怎样变,程式都可以在绘图函式中使用相同的逻辑单位。
有时候MM_TEXT和度量映射方式称为「完全局限性」映射方式,这就是说,您不能改变视窗和视埠的范围以及Windows将逻辑座标换算为装置座标的方法。MM_ISOTROPIC是一种「半局限性」的映射方式,Windows允许您改变视窗和视埠范围,但只是调整它们,以便x和y逻辑单位代表同