一 、 MM_TEXT映射模式下:
这是默认的映射模式,相对容易理解,设备坐标系和逻辑坐标系的Y轴都是向下增加。
二 、MM_LOENGLISH , MM_LOMETRIC , MM_HIENGLISH , MM_HIMETRIC , MM_TWIPS映射模式下:
设备坐标系的Y轴向下增加,逻辑坐标系Y轴向上增加。
SetViewportOrgEx()使用的是设备坐标系中的点。
SetWindowOrgEx()使用的是逻辑坐标系中的点。
我们现在建立一个坐标系,(0 , 0)点在客户区中心,Y轴向上, X轴向右:
方法一:
SetViewportOrgEx(hdc , cxClient / 2 , cyClient / 2 , NULL);
方法二:
pt.x = cxClient ;
pt.y = cyClient ;
DptoLp(hdc , &pt , 1) ;//经转换后pt.y 是负值
SetWindowOrgEx(hdc , -pt.x /2 , -pt.y / 2 , NULL) ;
通过这两段程序验证了设备坐标系的Y轴方向向下,逻辑坐标系的Y轴方向向上
三 、 MM_ISOTROPIC与MM_ANISOTROPIC映射模式下:
设备坐标系的Y轴向下增加,
对于逻辑坐标系:
这是默认的映射模式,相对容易理解,设备坐标系和逻辑坐标系的Y轴都是向下增加。
二 、MM_LOENGLISH , MM_LOMETRIC , MM_HIENGLISH , MM_HIMETRIC , MM_TWIPS映射模式下:
设备坐标系的Y轴向下增加,逻辑坐标系Y轴向上增加。
SetViewportOrgEx()使用的是设备坐标系中的点。
SetWindowOrgEx()使用的是逻辑坐标系中的点。
我们现在建立一个坐标系,(0 , 0)点在客户区中心,Y轴向上, X轴向右:
方法一:
SetViewportOrgEx(hdc , cxClient / 2 , cyClient / 2 , NULL);
方法二:
pt.x = cxClient ;
pt.y = cyClient ;
DptoLp(hdc , &pt , 1) ;//经转换后pt.y 是负值
SetWindowOrgEx(hdc , -pt.x /2 , -pt.y / 2 , NULL) ;
通过这两段程序验证了设备坐标系的Y轴方向向下,逻辑坐标系的Y轴方向向上
三 、 MM_ISOTROPIC与MM_ANISOTROPIC映射模式下:
设备坐标系的Y轴向下增加,
对于逻辑坐标系: