首页 新闻 会员 周边 捐助

窗口、视口的映射问题

0
悬赏园豆:100 [已关闭问题] 关闭于 2012-09-01 17:50

from:《windows 程序设计》(第五版、清华)

第五张 绘图基础 5.5.6 讲 MM_ISOTROPIC

P155;

代码如下:

/************************************映射代码
SetMapMode(MM_ISOTROPIC);
SetWindowExtEx(hdc,32767,32767,NULL);
SetViewportExtEx(hdc,cxClient,-cyClient,NULL);
SetWindowOrgEx(hdc,0,32767,NULL);
*******************************************/

完成的功能是 :当客户区的高度大于宽度(假设为高:宽=2:1),逻辑窗口将位于左上角。

问题是:1.这里所说的客户区是否就是显示器?视口?

2.SetViewportExtEx(hdc,cxClient,-cyClient,NULL);中 cyClient前的‘-’是否仅仅表示之后建立的窗口坐标在y方向与视口坐标相反(由下正变为上正)?还有没有其他作用?

3.这段代码是如何实现了这个功能我是完全看不懂啊!!!!

4.最最最关键的是 显示这个区域也就罢了,配图中的坐标轴到底是神马坐标? 根本不可思议的是坐标原点为什么会在(0,32767)这个位置?

 

真心求解啊 各路大神!!!

爱的谜语的主页 爱的谜语 | 初学一级 | 园豆:187
提问于:2012-09-01 11:45
< >
分享
所有回答(1)
0

气疯了~~ 最后终于搞明白了

是由于清华版的印刷错误,在P156,setwindowsorgex 应该换为setviewportorgex;两天时间啊 太天理不容了!!!

光关注翻译,都把原版给改了 有个屁用啊 ;幸好这本书出了两个版本,我才研究了两天 不然……唉 好好学英语 看原版!!!

SetWindowExtEx设置窗口范围:这是表示坐标轴的最大范围,注意x,y都可以为负的;

SetViewportExtEx设置上面设置的逻辑范围所对应的设备范围,当符号不同的时候可以简单理解为改变逻辑坐标的方向,以本题为例,逻辑坐标的方向已经如图所示了,所以用SetWindowOrgEx可以很容易就得出结论了!~

爱的谜语 | 园豆:187 (初学一级) | 2012-09-01 17:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册