全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC 例说Windows窗口、视口以及GDI映射模在Windows应用程序中,只要进行绘图,就要使用GDI坐标系统。Windows提供了几种映射方式,每一种映射都对应着一种坐标系。例如,绘制图形时,必须给出图形各个点在客户区的位置,其位置用x和y两个坐标表示,x表示横坐标,y表示纵坐标。在所有的GDI绘制函数中,这些坐标使用的是一种逻辑单位。当GDI函数将结果输出送到某个物理设备上时,Windows将逻辑坐标转换成设备坐标(如屏幕或打印机的像素点)。本文讨论了图形环境中的各个映射模式,包括它们是什么,怎么工作的,以及它们真正的含义。一、窗口、视口以及映射模式基本概念强调一个网上和教科书上没有将清楚但是至关重要的概念:窗口和视口其实是同一块矩形区域,两者坐标系的原点是同一个点。窗口和视口的区别仅仅在于窗口使用右手坐标系,单位采用逻辑坐标,是站在场景建模的角度上讲的,窗口中的物体是实实在在的客观物体;视口使用左手坐标系,单位采用设备坐标,是站在观察者的角度上讲的,视口中的物体是经过映射处理后的客观物体的像。拿显微镜打个比方就好理解了,窗口中的像是放在显微镜的载物台上细菌的肉眼观察大小,它是客观的实相;视口中的像是人眼睛通过显微镜看到细菌的大小,它是眼睛看到的虚像;显微镜的放大作用就相当于GDI映射模式。(一)逻辑坐标。逻辑坐标即是世界坐标系下的坐标。逻辑坐标与设备无关,客观世界中的场景可以由世界窗口或视口中进行描述,在窗口中进行描述时使用世界坐标系中的坐标单位也即逻辑坐标,在视口中进行描述使用的是设备坐标。(二)设备坐标。图形输出时,Windows将GDI函数中指定的逻辑坐标映射为设备坐标。在屏幕显示的设备坐标系统中,单位以像素点为准,水平值从左到右增大(正方向向右),垂直值从上到下增大(正方向向下)。注意设备坐标系的原点永远不会移动,它们仅仅与物理设备有关。设备空间的范围实际显示设备上的矩形区域,通常有三种范围:窗口的客户区(使用BeginPaint或GetDC获取)全窗口(使用GetWindowDC获取)全屏幕(使用GetDc(0)/CreateDC获取);还有一些特殊的设备空间,如内存设备空间(使用CreateCompatibleDC获取),打印机设备空间,元文件设备空间即(CreateMetaFile)Windows中包括以下3种设备坐标,以满足各种不同需要:1、客户区域坐标,包括应用程序的客户区域,客户区域的左上角为(0,0)。2、屏幕坐标,包括整个屏幕,屏幕的左上角为(0,0)。屏幕坐标用在WM_MOVE消息中(对于非子窗口)以及下面的Windows函数中:CreateWindow和MoveWindow(都对于非子窗口)、GetMessage、GetCursorPos、GetWindowRect、WindowFromPoint和SetBrushOrg中。用函数ClientToScreen和ScreenToClient可以将客户区域坐标转换成屏幕区域坐标,或反之。3、全窗口坐标,包括一个程序的整个窗口,包括标题条、菜单、滚动条和窗口框,窗口的左上角为(0,0)。使用GetWindowDC得到的窗口设备环境,可以将逻辑单位转换成窗口坐标。(三)映射模式。映射方式定义了Windows如何将GDI函数中指定的逻辑坐标映射为设备坐标。Windows为了程序员方便,允许程序员在一个假想的空间上(世界坐标系中)绘制图形,这就是逻辑空间,但是最终这些图形还是需要显示到真实的屏幕或打印机,这就是设备空间。此时就会出现一个问题,即如何将逻辑空间中的图形通过怎样的关联适当的显示在屏幕上呢?Windows给出了答案-映射模式,Windows内定了8种映射模式,其中有常用的6种模式(MM_TEXT、MM_LOMETRIC、MM_HIMETRIC、MM_LOENGLISH、MM_HIENGLISH、MM_TWIPS)把逻辑单位及数轴的方向都确定好了,还有2种允许自行定义逻辑单位及数轴方向。这两种模式的区别在于MM_ISOTROPIC要求必须横纵两轴的逻辑单位必须是相等的,而MM_ANISOTROPIC是绝对的自定义,没有任何限制。映像方式逻辑单位增加值x值y值MM_TEXT像素右下MM_LOMETRIC0.01 cm右上MM_HIMETRIC0.001 cm右上MM_LOENGLISH0.01 in.右上MM_HIENGLISH0.001 in.右上MM_TWIPS1/1440 in.右上MM_ISOTROPIC任意(x=y)可选可选MM_ANISOTROPIC任意(x!=y)可选可选二、窗口、视口以及映射模式的意义MFC缺省地使用MM_TEXT映射模式,一个逻辑单位等于设备中的一个象素。它是实现所见即所得的基础。其实大部分情况下使用像素进行工作是很合适的,不需要使用除了MM_TEXT方式外的任何映射方式。但是如果你需要进行类似CAD这样的绘图时,需要以英寸或者厘米尺寸显示图像,就需要使用其他映射方式,以方便编程。因为只要你把映射方式确定后,你只需要在逻辑空间使用逻辑单位绘制图像就好了,无需担心怎样显示在真实的屏幕或打印机上,这些繁琐的工作Windows会做好的。这时可能会有人问,要是使用cm作为逻辑单位,Windows是如何确定1cm的真实长度呢?我悄悄地告诉你,Windows它根本不知道!,别惊讶,听我接着说,Windows它确实不知道,但是Windows知道像素,这个很重要,它会以像素为依据计算得出1cm的长度(不一定是真实长度)。当程序需要绘制了一个10cm10cm的矩形时,如果需要显示在打印机上,那么Windows首先通过GetDeviceCaps获取打印机相关信息如每英寸显示320像素(点),而1英寸2.54厘米,那么Windows就可以计算出10cm其实就是(320/2.54)*101259.8点。10cm10cm矩形=1259.8点1259.8点矩形,打印机上完美的显示了10cm10cm的矩形没有任何问题,10cm的长度绝对正确,不信你可以用尺子量!打
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年低空经济产业环境监测人才需求报告
- 2026-2031中国宠物饲料行业市场专项调研报告
- 2026-2031中国硅酸钙板市场专项调查报告
- 2026-2031中国光电子材料市场发展分析及未来投资潜力可行性报告
- 2026-2031中国工艺陶瓷市场深度调查与战略咨询报告
- 护理学题库及解析
- 2025继续教育公需课必修课考试题库附答案
- 2025年老年人慢性病严重精神障碍患者健康管理规范培训试题及答案
- 2025麻醉药品精神药品专项培训考核试题及答案
- 2025年电气人员面试试题及答案
- GJB9764-2020可编程逻辑器件软件文档编制规范
- 热催化转化-洞察及研究
- 《“十五五”冷链物流发展规划》发布 2035年全面建成现代冷链物流体系
- 拆电梯施工方案(3篇)
- 2025中国邮政校园招聘补录笔试历年参考题库附带答案详解
- 2024届吉林省吉林地区普通高中高三三模考试语文试题+答案
- 职称评定政策解读
- 发动机装配工艺培训课件
- 2025年浙江省中考英语真题(解析版)
- 5.1延续文化血脉 教案 -2025-2026学年统编版道德与法治九年级上册
- 2025年国企中层干部竞聘笔试题及答案
评论
0/150
提交评论