windows映射模式及相关问题的解决

windows映射模式及相关问题的解决

ID:14173369

大小:79.50 KB

页数:7页

时间:2018-07-26

windows映射模式及相关问题的解决_第1页
windows映射模式及相关问题的解决_第2页
windows映射模式及相关问题的解决_第3页
windows映射模式及相关问题的解决_第4页
windows映射模式及相关问题的解决_第5页
资源描述:

《windows映射模式及相关问题的解决》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Windows应用程序绘制图形时使用的是一种逻辑单位,每个逻辑单位的大小由映射模式决定,这个逻辑单位既可以与设备单位(屏幕或打印机上的一个像素点)相同,也可以是一种物理单位(如毫米),还可以是用户自定义的一种单位。在Windows应用程序中,只要与输出有关系,都要使用映射模式。本文的目的是帮助读者了解映射模式的一些基本知识,并对在使用中经常出现的一些问题提出解决方案。一、映射模式基本知识当Windows应用程序在其客户区绘制图形时,必须给出在客户区的位置,其位置用x和y两个坐标表示,x表示横坐标,y表示纵坐标。在所有的GDI绘制函数中,这些坐标使

2、用的是一种"逻辑单位"。当GDI函数将输出送到某个物理设备上时,Windows将逻辑坐标转换成设备坐标(如屏幕或打印机的像素点)。逻辑坐标和设备坐标的转换是由映射模式决定的。映射模式被储存在设备环境中。GetMapMode函数用于从设备环境得到当前的映射模式,SetMapMode函数用于设置设备环境的映射模式。1.逻辑坐标逻辑坐标是独立于设备的,它与设备点的大小无关。使用逻辑单位,是实现"所见即所得"的基础。当程序员在调用一个画线的GDI函数LineTo,画出25.4mm(1英寸)长的线时,他并不需要考虑输出的是何种设备。若设备是VGA显示器,W

3、indows自动将其转化为96个像素点;若设备是一个300dpi的激光打印机,Windows自动将其转化为300个像素点。2.设备坐标Windows将GDI函数中指定的逻辑坐标映射为设备坐标,在所有的设备坐标系统中,单位以像素点为准,水平值从左到右增大,垂直值从上到下增大。Windows中包括以下3种设备坐标,以满足各种不同需要:7(1)客户区域坐标,包括应用程序的客户区域,客户区域的左上角为(0,0)。(2)屏幕坐标,包括整个屏幕,屏幕的左上角为(0,0)。屏幕坐标用在WM_MOVE消息中(对于非子窗口)以及下面的Windows函数中:Crea

4、teWindow和MoveWindow(都对于非子窗口)、GetMessage、GetCursorPos、GetWindowRect、WindowFromPoint和SetBrushOrg中。用函数ClientToScreen和ScreenToClient可以将客户区域坐标转换成屏幕区域坐标,或反之。(3)全窗口坐标,包括一个程序的整个窗口,包括标题条、菜单、滚动条和窗口框,窗口的左上角为(0,0)。使用GetWindowDC得到的窗口设备环境,可以将逻辑单位转换成窗口坐标。3.逻辑坐标与设备坐标的转换方式映射方式定义了Windows如何将GDI

5、函数中指定的逻辑坐标映射为设备坐标。要继续讨论映射方式我们要介绍Windows有关映射模式的一些术语:我们将逻辑坐标所在的坐标系称为"窗口",将设备坐标所在的坐标系称为"视口"。"窗口"依赖于逻辑坐标,可以是像素点、毫米或程序员想要的其他尺度。"视口"依赖于设备坐标(像素点)。通常,视口和客户区域等同。但是,如果程序员用GetWindowDC或CreateDC获取了一个设备环境,则视口也可以指全窗口坐标或屏幕坐标。点(0,0)是客户区域的左上角。x的值向右增加,y的值向上增加。对于所有映射模式,Windows都用下面两个公式将窗口坐标转换成视口坐

6、标:xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrgyViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+yViewOrg7其中,(xWindow,yWindows)是待转换的逻辑点,(xViewport,yViewport)是转换后的设备点。如果设备坐标是客户区域坐标或全窗口坐标,则Windows在画一个对象前,还必须将这些坐标转换成屏幕坐标。这两个公式使用了分别指定窗口和视口原点的点:(xWinOrg,yWinOrg)是逻辑坐标的窗口原点;(

7、xViewOrg,yViewOrg)是设备坐标的视口原点。在缺省的设备环境中,这两个点均设置为(0,0),但它们可以改变。此公式意味着,逻辑点(xWinOrg,yWinOrg)总被映射为设备点(xViewOrg,yViewOrg)。Windows还能将视口(设备)坐标转换为窗口(逻辑)坐标:xWindow=(xViewport-xViewOrg)*(xWinExt/xViewExt)+xWinOrgyWindow=(yViewport-yViewOrg)*(yWinExt/yViewExt)+yWinOrg可以使用Windows提供的两个函数DP

8、toLP和LPtoDP在设备坐标及逻辑坐标之间互相转换。4.映射模式的种类Windows定义了表1所列出的8种映射方式。上述映射模式中又

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。