📄 subject_67129.htm
字号:
<p>
序号:67129 发表者:高建军 发表日期:2003-12-29 16:08:57
<br>主题:Windows编程中的“视口”和“窗口”
<br>内容:这两个名词怎样区分计算?<BR>书上讲的我还是弄不明白!<BR>我指的是“视图原点”和“窗口原点”<BR>请帮帮忙!<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:不知道 回复日期:2003-12-29 22:05:37
<br>内容:其实窗口和视口是与映射模式相关联的:映射方式就是用于从"窗口"(逻辑坐标)到"视口"(设备坐标)的映射。"视口"是基于设备坐标的,通常,视口与客户区相同;"窗口"是基于逻辑坐标的,逻辑坐标可以是像素、毫米、英寸等。下面的公式是将窗口(逻辑)坐标转化为视口(设备)坐标:<BR>xViewport = (xWindow - xWinOrg)*xViewExt/xWinExt + xViewOrg<BR>yViewport = (yWindow - yWinOrg)*yViewExt/yWinExt + yViewOrg<BR>(xWindow,yWindow)是待转换的逻辑点,(xViewport,yViewport)是转换后的设备坐标。 设备坐标的视口原点(xViewOrg,yViewOrg)和逻辑坐标的窗口原点(xWinOrg,yWinOrg)默认情况下均被设置成(0,0),但具体情况下可以改变;(xWinExt,yWinExt)是逻辑坐标的窗口范围;(xViewExt,yViewExt)是设备坐标的窗口范围。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:半导体 回复日期:2003-12-30 18:10:47
<br>内容:这不是书上的原话吗?<BR>我看了,可还是不能够理解!<BR>能否解释得通俗一些?<BR>谢谢!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:山 人 回复日期:2003-12-30 23:12:17
<br>内容:http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=59666&forum_id=<BR><BR><BR><BR><BR>想这个问题一定要抱着脑袋想
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:半导体 回复日期:2003-12-31 13:43:18
<br>内容:看了《windows程序设计》,还是不明白,我想再问问:<BR>text映射模式下<BR>SetViewportOrgEx(hdc,10,10,NULL);运行后<BR>视口原点还是(0,0)吗?<BR>客户区左上角是(0,0)吗?<BR>视口原点与设备点(0,0)有区别吗?<BR>公式:xViewport=(xWindow-xWinOrg)*xViewExt/xWinExt+xViewOrg<BR>中,为什么是(xWindow-xWinOrg)?<BR>我觉得应是(xWindow+xWinOrg)才可理解<BR>不好意思,我什么都不懂,别笑话我.... <BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:山 人 回复日期:2003-12-31 20:58:55
<br>内容:视口原点还是(0,0)吗?<BR>客户区左上角是(0,0)吗?<BR>视口原点与设备点(0,0)有区别吗?<BR><BR>你不觉得这样问有问题吗?(0,0)是设备坐标还是逻辑点?<BR><BR><BR><BR>实际上就是个坐标系变换的问题 靠文字是说不明白的<BR><BR><BR>画几张图就容易懂了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:半导体 回复日期:2004-01-01 16:44:23
<br>内容:<BR>视口原点改变后,某一点的设备坐标改变吗?<BR>逻辑坐标改变吗?<BR>视口原点坐标是指屏幕左上角的坐标吗?<BR>若是,那么设备坐标是(0,0)?那么视口原点不就不变了吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:半导体 回复日期:2004-01-02 10:13:29
<br>内容:TEXT映射模式下<BR>运行SetViewportOrgEx(hdc,10,10,NULL);后<BR>视口原点坐标为多少,某一点的设备坐标改变吗?<BR>设备坐标原点呢?<BR>既然是“原点”,那坐标就应该是(0,0)嘛<BR>我这个观点哪里出了问题? <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:山 人 回复日期:2004-01-03 00:41:00
<br>内容:其实我前两天的确看明白了 不过最近又有点糊涂了 这东西很麻烦的<BR><BR>要是说错了 别笑话<BR><BR>先说设备坐标 设备坐标指的是以像素为单位的坐标系 <BR><BR>通常有三种设备坐标:屏幕坐标 整窗口坐标 客户区坐标 他们之间坐标的转换 可以用ClientToScreen和ScreenToClient可以将客户区座标转换为屏幕座标,或者反过来,将屏幕座标转换为客户区座标。也可以使用GetWindowRect函数取得屏幕座标下的整个窗口的位置和大小。这三个函数为一种设备座标转换为另一种提供了足够的信息。<BR><BR><BR><BR><BR>映射模式用於定义从「窗口」(逻辑座标)到「视口」(设备座标)的映射。<BR><BR>就是说设备坐标以像素为单位 逻辑坐标以自己定义的长度为单位 他们之间的比例关系就相当于映射模式<BR><BR><BR>要时刻记住 视口与窗口是两套不同的坐标系 同一个点 在这两个坐标系下的坐标值是不同的(很明显,实际上在屏幕上是同一个点) 讨论一个点的坐标时 要时刻注意你研究的是他的设备坐标还是逻辑坐标 即在视口中的坐标还是窗口中的坐标<BR><BR><BR><BR><BR>//视口原点改变后,某一点的设备坐标改变吗?<BR><BR><BR>视口对应设备坐标系 原点变了 任意一点的坐标当然要变<BR><BR>你说的“变”是什么意思? (1,1)设备点永远是(1,1)设备点 变化的只是(1,1)在屏幕上显示的位置 或者比如说(1,1)设备点原来对应(1,1)逻辑点 现在对应(2,2)逻辑点<BR><BR>//逻辑坐标改变吗?<BR><BR>你说呢?<BR><BR>(1,1)逻辑点在屏幕上的位置不变 但对应的设备点变了<BR><BR>//视口原点坐标是指屏幕左上角的坐标吗?<BR><BR><BR>按我的理解 视口原点坐标通常是指第三种情况: 客户区左上角的坐标(有时也回出现其他两种情况)<BR><BR><BR>//若是,那么设备坐标是(0,0)?那么视口原点不就不变了吗? <BR><BR>设备坐标怎么能是(0,0) 设备坐标是指坐标系 (0,0)是一个点<BR><BR>视口原点肯定是(0,0)设备点嘛 不是(0,0) 能叫原点吗?<BR><BR><BR>//TEXT映射模式下<BR>//运行SetViewportOrgEx(hdc,10,10,NULL);后<BR>//视口原点坐标为多少,某一点的设备坐标改变吗?<BR><BR>视口原点当然是(0,0)设备点了 变化的是(0,0)设备点在屏幕上的位置<BR>那他的位置在哪呢? 在运行SetViewportOrgEx(hdc,10,10,NULL)之前的(10,10)设备点处<BR>那运行SetViewportOrgEx(hdc,10,10,NULL)后(0,0)设备点对应的逻辑点是多少呢?<BR>就是运行SetViewportOrgEx(hdc,10,10,NULL)之前的(10,10)设备点对应的逻辑点的值<BR><BR><BR><BR><BR>你的问题就是没有搞清楚到底什么“变”了<BR><BR><BR><BR>2004-1-3 0:46:47
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -