未完待续。。。
先来讲解一下什么是视口与窗口。注意,不要把术语窗口与我们平常说的打开一个窗口相混淆。我们平常说的窗口恰恰是这里要讲要术语视口。
所谓视口,就是我们看得见的部分。在上图中,视口就是红色虚线框起来的部分。当我们拖动滚动条向下拖动网页的时候,视口始终就是这么大,保持不变。而整个网页就是窗口。向下拖动网页的时候,网页上半部分因为超出视口,而看不到了。我们从视口中看到了网页的一部分。
有了这个形象的说明,我们就很清楚视口与窗口的区别了。视口就是当前“窗口”的大小,也就是红色虚线框所围成的区域。而窗口就是整张网页的大小。现在视口只是把窗口的一部分给显示了出来。
SetViewportOrgEx(
HDC hdc,
int X,
int Y,
LPPOINT lpPoint
);
视口左上角始终是(0, 0),即红色虚线框的左上角。x轴向右为正,y轴向下为正。当调用SetViewportOrgEx函数后,修改的只是映射关系而已,即以后窗口要把SetWindowOrgEx指定点(默认是窗口自己的(0, 0)点)映射到视口的点(X, Y)。当然,你也可以认为现在视口的原点为(X,
Y),但要注意,视口的左上角始终是(0, 0)点。
==========================================================
SetWindowOrgEx(
HDC hdc,
int X,
int Y,
LPPOINT lpPoint
);
窗口左上角也始终是(0, 0),该原点是在整个网页的左上角。这个函数是设置窗口的坐标原点怎么映射视口的坐标原点。当调用该函数后,就把窗口的(X, Y)映射到视口的原点处。也就是说,窗口的原点始终是(0, 0),始终在窗口的左上角。而SetWindowOrgEx函数修改的只是映射关系而已。就是把窗口的(X, Y)平移到视口的SetViewportOrgEx指定点处(默认情况下是视口的(0, 0)点)。当然,你也可以认为现在窗口的原点是(X, Y),但是窗口的左上角始终也是(0, 0)点。
通过上述分析,我们可以知道,无论怎么设置原点,所有点的坐标的值都没有发生变化,原来当原点是(0, 0)时,我们考察点A,它的坐标是(2, 3)。发现当把原点设为(10, 20)的时候,点A的坐标仍然是(2, 3)。
上述两个函数修改的只是映射关系而已。就是把窗口的原点平移到视口的原点处。
本文介绍了视口和窗口的区别,视口是屏幕上可见的部分,而窗口是包含整个内容的区域。当滚动时,视口保持不变,只显示窗口的一部分。SetWindowOrgEx和SetViewportOrgEx函数用于调整窗口和视口的坐标映射关系,改变原点位置,但并不影响点的实际坐标值。这两个函数只修改了映射关系,而非实际坐标。

968

被折叠的 条评论
为什么被折叠?



