3.2 world空间 → page空间
有时候我们需要从一个倾斜的角度显示一个圆或者其它什么图形,但是我们在使用绘图语句时,心目中仍然要当这个圆正对着我们来考虑问题,因为只有这样,我们在构造图形时的思维才不至于混乱,怎么实现呢?就可以通过加上world空间达到这个目的。由于一般很少使用这种映射,我在这里只以一个例子简单加以说明。
void csampleview::drawshearcircle()
{
cclientdc dc(this);
dc.setmapmode(mm_anisotropic); //映射模式设定为各向异性。
//以下语句将page空间最小刻度值设为1mm,原点位于客户区矩形中心,x正向向右,y正向向上。
dc.setwindowext(1, -1);
int ppermmx = dc.getdevicecaps(horzres) / dc.getdevicecaps(horzsize);
int ppermmy = dc.getdevicecaps(vertres) / dc.getdevicecaps(vertsize);
dc.setviewportext(ppermmx, ppermmy);
crect cr;
getclientrect(&cr);
dc.setviewportorg(cr.right/2, cr.bottom/2);
dc.setwindoworg(0, 0);
//以下语句设置world空间到page空间的映射规则,将会产生一个y轴的剪切。
setgraphicsmode(dc.getsafehdc(), gm_advanced); //一定要首先打开gm_advanced。
xform xf;