【发布时间】:2011-08-06 19:12:18
【问题描述】:
祝大家有美好的一天。这是我在这里的第一篇文章。 我正在阅读“使用 MFC 编程 Windows - J Prosise (MS Press)”
在第二章中我遇到了 2 个让我很困惑的 GDI 函数,我引用了这段文字:
SetViewportOrg 和 SetWindowOrg 很容易混淆,但是它们之间的区别其实是很清楚的。使用 SetViewportOrg 将视口原点更改为 (x,y) 会告诉 Windows 将逻辑点 (0,0) 映射到设备点 (x,y)。使用 SetWindowOrg 将窗口原点更改为 (x,y) 基本上是相反的,告诉 Windows 将逻辑点 (x,y) 映射到设备点 (0,0) - 显示表面的左上角。在 MM_TEXT 映射模式下,两个函数之间唯一真正的区别是 x 和 y 的符号。在其他映射模式中,还有更多的功能,因为 SetViewportOrg 处理设备坐标,而 SetWindowOrg 处理逻辑坐标
我真的对此感到困惑,就像我们将视点原点更改为 (50,50) 然后使用 dc.ellipse (0,0,50,50) 它将从设备点 (50, 50) 作为原点,但是如果我们将窗口原点更改为 (50,50) 是否意味着现在逻辑点 (50,50) 将映射到 (0,0) 如果是这样,椭圆不会超出客户端上部区域?映射模式是 MM_LOWENGLISH 还是别的什么?届时情况将如何变化?如果有人能对此事有所了解,我将不胜感激
【问题讨论】:
标签: visual-c++ mfc gdi coordinate-systems