新加坡有哪些大学排名:什么是逻辑坐标和设备坐标?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 03:55:46
这些天正在看VC++图形和图像编程,但看不懂什么是逻辑坐标和设备坐标?有没有高手能够详细的告诉我一下 ,最好能用比喻和举例子给我讲清楚,谢谢!!!

逻辑坐标是独立于设备的,它与设备点的大小无关。使用逻辑单位,是实现"所见即所得"的基础。当程序员在调用一个画线的GDI函数LineTo,画出25.4mm(1英寸) 长的线时,他并不需要考虑输出的是何种设备。若设备是VGA显示器,Windows自动将其转化为96个像素点;若设备是一个300dpi的激光打印机,Windows自动将其转化为300个像素点。
  Windows将GDI函数中指定的逻辑坐标映射为设备坐标,在所有的设备坐标系统中,单位以像素点为准,水平值从左到右增大,垂直值从上到下增大。
  逻辑坐标与设备坐标的转换方式
  映射方式定义了Windows如何将GDI函数中指定的逻辑坐标映射为设备坐标。要继续讨论映射方式我们要介绍Windows有关映射模式的一些术语:我们将逻辑坐标所在的坐标系称为"窗口",将设备坐标所在的坐标系称为"视口"。
  "窗口"依赖于逻辑坐标,可以是像素点、毫米或程序员想要的其他尺度。
  "视口"依赖于设备坐标(像素点)。通常,视口和客户区域等同。但是,如果程序员用GetWindowDC或CreateDC获取了一个设备环境,则视口也可以指全窗口坐标或屏幕坐标。点(0,0)是客户区域的左上角。x的值向右增加,y的值向上增加。
  对于所有映射模式,Windows都用下面两个公式将窗口坐标转换成视口坐标: xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrg yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+yViewOrg
  其中,(xWindow,yWindows)是待转换的逻辑点,(xViewport,yViewport)是转换后的设备点。如果设备坐标是客户区域坐标或全窗口坐标,则Windows在画一个对象前,还必须将这些坐标转换成屏幕坐标。

对于屏幕,逻辑坐标是第一象限,设备坐标是第四象限,当然数值都是正值。
就是说屏幕的逻辑坐标是左下角是原点,整个屏幕都处于第一象限。
屏幕的设备坐标是左上角是原点。