GDI中的坐标映射问题[12]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 huawdai 的 blog

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;

本文关键:GDI,坐标映射,设备空间,物理空间,逻辑空间,页空间
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top