您的位置:首页 > 其它

转 关于SetViewPortOrgEx与SetWindowOrgEx

2012-06-17 15:10 211 查看
SetViewPortOrgEx与SetWindowOrgEx

GDI绘图中调整窗口与视口的坐标原点,相当于定位笛卡尔逻辑坐标系。

先说一下自己对窗口与视口的理解:

窗口(Window),是指整个程序界面,比如一个带滚动条IE浏览器中,页面内容很长,所有内容构成窗口;视口(Viewport),指的是当前屏幕看到的那一块,即滚动条所处的可见位置。

视口,与屏幕设备相关,用设备坐标;窗口,与设备无关,用逻辑坐标。TextOut等大部分GDI函数都用逻辑坐标。要讲的两个函数,作用即是两坐标的映射调整。

引用Charlez的《Windows程序设计》一下,有点晕:

如果将视口原点改变为(xViewOrg,yViewOrg),则逻辑点(0.0)就会映像为设备点(xViewOrg,yViewOrg)。如果将窗口原点改变为(xWinOrg,yWinOrg),则逻辑点(xWinOrg,yWinOrg)将会映像为设备点(0,0),即左上角。不管对窗口和视端口原点作什么改变,设备点(0,0)始终是显示区域的左上角。

这里,Set不是“设置”,而是“调整”。初始时,视口与窗口原点重合,都在左上角。都是“被调整主体”上移。

SetViewPortOrgEx(x,y) ——调整视口,令视口原点调整为现在的(x,y)

SetWindowOrgEx(x,y) ——调整窗口,令窗口原点调整为现在的(x,y)

具体过程如文末图所示。

我们知道,原始坐标如左图所示,向下向右为正,如果想要变为右图所示,应如何调整?视口上调了,SetViewPortOrgEx(x,y);或者说窗口下调了,SetWindowOrgEx(-x,-y)。它们执行的是相反操作。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: