绘图坐标系统学习笔记

'移动坐标系统 函数解释:

SetViewportOrg(int x,int y)----把逻辑坐标系统原点, 移到设备坐标点(x,y)
SetWindowOrg(int x,int y)----移动后结果:设备坐标的原点,落在新逻辑坐标系统的(x,y)点上。


改变y方向及整个绘图比例。(最好先移动原点,然后调用这个函数。)
SetMapMode 


'MM_ISOTROPIC ,MM_ANISOTROPIC 缩放坐标系统用函数:为避免错误,应按如下顺序依次调用。
SetWindowExt 指定窗口的逻辑尺寸。
SetViewportExt  指定窗口的设备尺寸。

 

-----如果从名称上理解,前三个函数比较好理解,

网上也有人说把SetViewportOrg理解成SetViewportOrgToDevice ,另一个也如此。

SetWindowEx ,SetWiewportEx 书中是这样说的:

SetWindowExt sets the "window extents" and SetViewportExt sets the "viewport extents." Think of a window as something whose size is measured(被测量) in logical units and a viewport as something whose size is measured in device units, or pixels. 

 

我的总结:其实绘图坐标都是指在 viewport 坐标系统。 只是在默认时这两个坐标系统一致。

另外,可根据LPtoDP,DPtoLP来转换这两个系统的坐标。

 如下面的代码可以来看转换的比例:

 CPoint pt(10,10);
 CPoint ptOrg(0,0);
 dc.LPtoDP(&pt);
 dc.LPtoDP(&ptOrg);

 int nScaleX=abs(pt.x-ptOrg.x);   //10个现在的绘图单位(x方向),等于多少原来的绘图单位。
 int nScaleY=abs(pt.y-ptOrg.y);   //10个现在的绘图单位(y方向),等于多少原来的绘图单位

 

posted on 2009-12-25 22:24  杨志农  阅读(137)  评论(0)    收藏  举报

导航