请问窗口坐标,逻辑坐标和视口坐标,设备坐标的区别,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/20 22:44:35
我是个VC新手,请问窗口坐标,逻辑坐标和视口坐标,设备坐标的区别,窗口坐标是否对应的是逻辑坐标,视口坐标是否对应的是设备坐标?谢谢!
视口坐标的原点在哪里,方向如何,视口坐标的原点在哪里,方向如何?谢谢

应该说
窗口坐标 是相对于 视口坐标 而言
逻辑坐标 是相对于 设备坐标 而言

补充:
窗口坐标是基于逻辑坐标的.
视口坐标是基于设备坐标.
上面这两话是抄自百度百科的,我的理解是:
窗口坐标的单位长度与逻辑坐标的单位长度相同,也就是说,当你在窗口坐标上画图时,传递给画图函数的参数的单位是逻辑单位。但是当windows把图形输出到屏幕上时,并不是直接把图形按照它在窗口坐标上的位置输出到屏幕上的,而是先把它在窗口坐标上的值转换成视口坐标上的值(与此同时,也把逻辑坐标按照不同的映射模式转换成设备坐标)。下面举例说明:
由于 一般情况下,窗口原点是与视口原点相同的,(也就是说,位于屏幕上的同一个位置),为了体会不窗口坐标与视口坐标的转换,先用SetwindowtOrg(100,-300)将视口移到(100,-300),这相当于把 逻辑点(100,-300)映射到设备点(0,0) (注意:如果改用SetviewportOrg移动原点,则其原点的移动尺寸与映射模式无关,其300个长度单位等于9厘米)

(注:这个设备点也是相对于当前的DC而言,如果当前的DC是整个屏幕,那么设备点(100,-300)的原点就在屏幕的左上角,如果当前的DC是某个应用程序的客户区,那么设备点(100,-300)的原点就是应用程序的客户区的左上角,)

现在假设当前DC是某个应用程序的客户区,映射模式为 MM_LOMETRIC
(在这种映射模式下,设备坐标以0.1 毫米为一个长度单位,Y轴的正方向为向上,也就是说,屏幕上的左上角的Y坐标为0,下面的Y坐标均小于0),当使用语句:

MoveTo(100,-600);
LineTo(100,-800);//Y轴负方向向下,所以用负值

进行画图时,它的转换过程如下:
1)窗口与视口坐标转换,由于窗口坐标(100,-300 ),映射为设备坐标(0,0),所 以
窗口(100,-600)映射为视口(0,-300)
窗口(100,-800)视映射为视口(0,-500)

2)逻辑与