逻辑坐标和设备坐标
在正常情况下如果窗口不能卷动,或者可以卷动但是未卷动,则这两种坐标是相同的。
窗口:我们程序所创建的那个可视的界面。
视口: 客户区也就是Client area的左上角(也称为视口原点)开始肉眼所能见的显示区域。
在窗口未卷动之前,窗口原点和视口原点是重叠的。但是当窗口向下卷动。此时窗口原点和视口原点就不同。视口原点还是原来的地方,但是窗口原点则被卷到了上方。(希望我这样讲能比较直观)。
相对于窗口原点的是逻辑坐标。而相对于视口原点的则为设备坐标。(注意我们之前讨论的设备坐标是以客户区域为参照的,另外还有以窗口为参照(包括非客户区域和以屏幕为参照,也就是通常的屏幕坐标))。
如果屏幕卷动了此时要得到正确的逻辑坐标就必须使用
OnPrepareDC();重设窗口原点和视口原点。
DPtoLP(); 转换设备坐标为逻辑坐标。
本文探讨了在程序界面中逻辑坐标与设备坐标的区别及其应用场景。解释了窗口与视口的概念,以及在窗口卷动时如何通过OnPrepareDC()和DPtoLP()函数将设备坐标转换为逻辑坐标。
4071

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



