Windows提供了函式SetViewportOrgEx和SetWindowOrgEx,用来改变视埠和视窗的原点,这些函式都具有改变轴的效果,以致(0,0)不再指左上角。一般来说,您会使用SetViewportOrgEx或SetWindowOrgEx之一,但不会同时使用二者。
我们来看一看这些函式有何效果:如果将视埠原点改变为(xViewOrg,yViewOrg),则逻辑点(0.0)就会映射为装置点(xViewOrg,yViewOrg)。如果将视窗原点改变为(xWinOrg,yWinOrg),则逻辑点(xWinOrg,yWinOrg)将会映射为装置点(0,0),即左上角。不管对视窗和视埠原点作什么改变,装置点(0,0)始终是显示区域的左上角。
例如,假设显示区域为cxClient个图素宽和cyClient个图素高。如果想将逻辑点(0,0)定义为显示区域的中心,可进行如下呼叫:
SetViewportOrgEx的参数总是使用装置单位。现在,逻辑点(0,0)将映射为装置点(cxClient/2,cyClient/2),而显示区域的座标系变成如下形状:
逻辑x轴的范围从-cxClient/2到+cxClient/2,逻辑y轴的范围从-cyClient/2到+cyClient/2,显示区域的右下角为逻辑点 (cxClient/2,cyClient/2)。如果您想从显示区域的左上角开始显示文字。则需要使用负座标:
用下面的SetWindowOrgEx叙述可以获得与上面使用SetViewportOrgEx同样的效果: