VC 坐标体系

1.逻辑坐标   LP
    
      逻辑坐标就为独立于设备地,它与设备点地大小无关。使用逻辑单位,就为实现写出来"所见即所得"地基础。当程序软件代码员在调用1个画线地GDI函数functionLineTo,画出25.4mm(1英寸)   长地线时,他并非要考虑输出地就为何种设备。若设备就为VGA显示器,Windows自动将其转化为96个像素点;若设备就为1个300dpi地激光打印机,Windows自动将其转化为300个像素点。     
    
      2.设备坐标   DP
    
      Windows将GDI函数function中指定地逻辑坐标映射为设备坐标,在所有地设备坐标系统项目中,单位以像素点为准,水平值从左到右增大,垂直值从顶到下增大。   
    
      Windows中包括以下3种设备坐标,以满足各种非同要:   
    
      (1)客户区域坐标,包括应用程序软件代码地客户区域,客户区域地左顶角为(0,0)。   
    
      (2)屏幕坐标,包括整个屏幕,屏幕地左顶角为(0,0)。屏幕坐标用在WM_MOVE消息中(对于非子窗口)以及下面地Windows函数function中:CreateWindow及MoveWindow(都对于非子窗口)、GetMessage、GetCursorPos、GetWindowRect、WindowFromPoint及SetBrushOrg中。用函数functionClientToScreen及ScreenToClient可以将客户区域坐标转换成屏幕区域坐标,或反之。     
    
      (3)全窗口坐标,包括1个程序软件代码地整个窗口,包括标题条、菜单、滚动条及窗口框,窗口地左顶角为(0,0)。使用GetWindowDC得到地窗口设备环境,可以将逻辑单位转换成窗口坐标。   
    
      3.逻辑坐标与设备坐标地转换方式   
    
      映射方式定义设置呢Windows如何将GDI函数function中指定地逻辑坐标映射为设备坐标。要继续讨论映射方式俺们要介绍Windows有关映射模式地1些术语:俺们将逻辑坐标所在地坐标系称为"窗口",将设备坐标所在地坐标系称为"视口"。   
    
      "窗口"依赖于逻辑坐标,可以就为像素点、毫米或程序软件代码员想要地其他尺度。     
    
      "视口"依赖于设备坐标(像素点)。通常,视口及客户区域等同。但就为,假如程序软件代码员用GetWindowDC或CreateDC获取呢1个设备环境,则视口也可以指全窗口坐标或屏幕坐标。点(0,0)就为客户区域地左顶角。x地值向右增加,y地值向顶增加。   
    
      对于所有映射模式,Windows都用下面两个公式将窗口坐标转换成视口坐标:   
    
      xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrg   
    
      yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+yViewOrg   
    
      其中,(xWindow,yWindows)就为待转换地逻辑点,(xViewport,yViewport)就为转换后地设备点。假如设备坐标就为客户区域坐标或全窗口坐标,则Windows在画1个对象前,还必须将此些坐标转换成屏幕坐标。   
    
      此两个公式使用呢分别指定窗口及视口原点地点:(xWinOrg,yWinOrg)就为逻辑坐标地窗口原点;(xViewOrg,yViewOrg)就为设备坐标地视口原点。在缺省地设备环境中,此两个点均设置为(0,0),但它们可以改变。此公式意味着,逻辑点(xWinOrg,yWinOrg)总被映射为设备点(xViewOrg,yViewOrg)。   
    
      Windows还能将视口(设备)坐标转换为窗口(逻辑)坐标:   
    
      xWindow=(xViewport-xViewOrg)*(xWinExt/xViewExt)+xWinOrg   
    
      yWindow=(yViewport-yViewOrg)*(yWinExt/yViewExt)+yWinOrg   
    
      可以使用Windows提供地两个函数functionDPtoLP及LPtoDP在设备坐标及逻辑坐标之间互相转换  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值