理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt

原创 2005年05月22日 21:50:00

理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt

按习惯,(0,0)就原点,原点就是(0,0),但是如果用此来理解windows的map mode,就会非常繁。其实,稍微改变一下观念,windows的map mode就比较好理解了。举例说明:

page space---->device space

pDC->SetMapMode(MM_LOMETRIC);
pDC->SetWindowOrg(40,0);  //这句“设定”page space的原点为(40,0),注意,                           
                            //这时(40,0)就是原点,原点就是(40,0)这个点,其实,(0,0)与原点没有必然联系。这                                                 //一句对下面的画图函数在page space中所作的图不会有任何影响。一句话:SetWindowOrg                                              //就是指定一下,page space中哪个点为原点。
pDC->Rectangle(0,0,100,-100);
pDC->Rectangle(0,-100,50,-200);


同理,SetViewportOrg也是指定一下,device space中哪个点为原点,两个坐标系映射时,两个原点重合。

SetWindowExt设定page space的大小,SetViewportOrg设定device space的大小,其实,真正有意义的只是两者的比例关系,例如:
在一个1024*768的显示屏上
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(10240,7680);
pDC->SetViewportExt(1024,768);
pDC->Rectangle(0,0,100,100);
就会画一个10 pixels*10 pixels的矩形。其本质就是,X方向,每个逻辑单位有1024/10240个象素,Y方向每个逻辑单位有768/7680个象素。因此,下面的代码有相同的作用
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(102400,76800);
pDC->SetViewportExt(10240,7680);
pDC->Rectangle(0,0,100,100);

两质本质一样,前者更易于理解。


若有错误,请DX们指正。

MFC API——》 SetWindowExt() 与SetViewportExt()

SetViewportExt(int   Pwidth,   int   Pheight)   //参数的单位为像素(Pixel),如果参数为负值表示viewport相应的坐标轴与device空间相反...
  • liuxiaomao1988
  • liuxiaomao1988
  • 2014年04月08日 22:56
  • 819

理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt

找到一篇好的介绍的文章,怕以后找不到了,转到博客里面供大家享用,哈哈~~ 按习惯,(0,0)就原点,原点就是(0,0),但是如果用此来理解windows的map mode,就会走弯路。其实,稍微改变一...
  • iamfranter
  • iamfranter
  • 2010年03月11日 15:35
  • 441

理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt

理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt按习惯,(0,0)就原点,原点就是(0,0),但是如果用此来理解windows的map...
  • xcine
  • xcine
  • 2007年04月02日 21:39
  • 894

SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt

page space && device spacepDC->SetMapMode(MM_LOMETRIC);pDC->SetWindowOrg(40,0);  //这句“设定”page space的...
  • xiaofengsheng
  • xiaofengsheng
  • 2009年04月25日 13:13
  • 534

关于SetWindowOrg和SetViewportOrg函数的说明!

关于这两个函数的说明,我就不详细叙述了,我的前两篇博客关于这两个函数的内容已经讲的比较清楚了,我只是记录一下我自己使用的心得!       void CmfcAppView::OnDraw(CDC* ...
  • lishuhuakai
  • lishuhuakai
  • 2014年01月18日 23:49
  • 5430

理解SetWindowOrg/SetViewportOrg/SetWindowExt/SetViewportExt

按习惯,(0,0)就原点,原点就是(0,0),但是如果用此来理解windows的map mode,就会走弯路。其实,稍微改变一下观念,windows的map mode就比较好理解了。举例说明: ...
  • htt9931
  • htt9931
  • 2013年08月08日 08:34
  • 500

【转】理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt

原文:http://hi.baidu.com/scorpio_zi_/blog/item/a981c9c777abe0d5d100608b.html 按习惯,(0,0)就原点,原点就是(0,0),但是...
  • code09
  • code09
  • 2009年09月22日 22:00
  • 449

SetWindowExt,SetViewportExt,SetWindowOrg和SetViewportOrg的理解

CRect rectClient;          GetClientRect(rectClient);         pDC->SetMapMode(MM_ANISOTROPIC);      ...
  • zhufangyou
  • zhufangyou
  • 2011年04月02日 18:56
  • 669

理解SetMapMode,SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt

http://blog.csdn.net/u012826294/article/details/22493431
  • u013047108
  • u013047108
  • 2014年04月06日 20:05
  • 280

SetMapMode,SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt

CDC::SetMapMode  virtual int SetMapMode( int nMapMode ); 函数功能描述:该函数设置指定设备环境的映射方式,映射方式定义了将逻辑单位转...
  • CNHK1225
  • CNHK1225
  • 2016年03月09日 17:35
  • 502
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:理解SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
举报原因:
原因补充:

(最多只允许输入30个字)