



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 逻辑坐标 逻辑坐标是独立于设备的 它与设备点的大小无关 使用逻辑单位 是实现 所见即所得 的基础 当程序员在调用一个画线的 GDI 函数 LineTo 画出 25 4mm 1 英寸 长的线时 他并不需要考虑输出 的是何种设备 若设备是 VGA 显示器 Windows 自动将其转化为 96 个像素点 若设备是一个 300dpi 的 激光打印机 Windows 自动将其转化为 300 个像素点 2 设备坐标 Windows 将 GDI 函数中指定的逻辑坐标映射为设备坐标 在所有的设备坐标系统中 单位以像素点 为准 水平值从左到右增大 垂直值从上到下增大 Windows 中包括以下 3 种设备坐标 以满足各种不同需要 1 客户区域坐标 包括应用程序的客户区域 客户区域的左上角为 0 0 2 屏幕坐标 包括整个屏幕 屏幕的左上角为 0 0 屏幕坐标用在 WM MOVE 消息中 对于非 子窗口 以及下面的 Windows 函数中 CreateWindow 和 MoveWindow 都对于非子窗口 GetMessage GetCursorPos GetWindowRect WindowFromPoint 和 SetBrushOrg 中 用函数 ClientToScreen 和 ScreenToClient 可以将客户区域坐标转换成屏幕区域坐标 或反之 3 全窗口坐标 包括一个程序的整个窗口 包括标题条 菜单 滚动条和窗口框 窗口的左上角为 0 0 使用 GetWindowDC 得到的窗口设备环境 可以将逻辑单位转换成窗口坐标 3 逻辑坐标与设备坐标的转换方式 映射方式定义了 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 在画一个对象前 还必须将这些坐标转换成屏 幕坐标 这两个公式使用了分别指定窗口和视口原点的点 xWinOrg yWinOrg 是逻辑坐标的窗口原点 xViewOrg yViewOrg 是设备坐标的视口原点 在缺省的设备环境中 这两个点均设置为 0 0 但 它们可以改变 此公式意味着 逻辑点 xWinOrg yWinOrg 总被映射为设备点 xViewOrg yViewOrg Windows 还能将视口 设备 坐标转换为窗口 逻辑 坐标 xWindow xViewport xViewOrg xWinExt xViewExt xWinOrg yWindow yViewport yViewOrg yWinExt yViewExt yWinOrg 可以使用 Windows 提供的两个函数 DPtoLP 和 LPtoDP 在设备坐标及逻辑坐标之间互相转换 视口视口 绘图操作只能在客户区中进行 除客户区以外的部分都叫非客户区 在 Windows 的作图函数中 涉及逻辑坐标到设备坐标的转换 这里提到的窗口 window 视口 viewport 是对应的概念 视口是与设备相关的一个矩形区域 坐标单位是与设备相关的 窗口的坐 标是逻辑坐标 与设备无关 窗口坐标的原点与视口坐标的原点始终对应于同一点 对于同一个图形 用 窗口坐标系统表达的该区域的长和宽与视口的坐标系统表达的长和宽是不同的 二者就定义了这两个坐标 系统的比例关系 程序作图时 使用的坐标总是是窗口坐标 而实际的显示或输出设备却各有自己的坐标 例如 有的打印机设备水平和垂直分辨率不同 其象素实际上是长方形 程序编写画一个圆 若不经任何 坐标转换 在打印机上输出的就是个椭圆 下面程序示范了如何将窗口逻辑坐标的 x y 向象素宽度均映射 为输出设备中的 1 64 英寸 code SetMapMode hDC MM ISOTROPIC SetWindowExtEx hDC 64 64 NULL SetViewportExtEx hDC GetDeviceCaps hDC LOGPIXELSX GetDeviceCaps hDC LOGPIXELSY NULL code 调用 SetWindowExt 函数后 紧接着应调用 SetViewportExt 函数 它的任务是规定水平及垂直坐 标轴的单位 可以这样认为 SetWindowExt 函数对应着 窗口 SetViewportExt 函数对应着 视口 几 点 1 窗口是基于逻辑坐标的 2 视口是基于设备坐标 3 设备坐标是以像素为单位的 逻辑坐标是以 cm m mm 4 系统最后一定要把逻辑坐标变为设备坐标 5 设备坐标有 3 种 a GetDC 客户区坐标 b GetWindowDC 窗口坐标 c GetDC NULL or CreateDC 屏幕坐标 问题如下 void CMyView OnDraw CDC pDC 1 pDC SetMapMode MM ISOTROPIC 2 pDC SetWindowExt 4000 3000 3 AfxGetMainWnd GetClientRect cRect 4 pDC SetViewportExt cRect Width cRect Height 5 pDC DPtoLP cRect 6 pDC SetWindowOrg cRect Width 2 cRect Height 2 7 pDC TextOut 850 1400 abc 我想问一下 上面每一步执行完后 窗口和视口的原点 范围分别是多少 屏幕分辨率是 800 600 谢谢 第一句 定义逻辑单位和具体的设备单位的映射模式 第二句 设置与设备上下文关联的窗口的 X 和 Y 坐标的范围 其中 4000 和 3000 是逻辑坐标 此 时窗口大小为 4000 3000 视口大小未知 第三句 得到客户区尺寸 此尺寸就是当前视口尺寸 如果 800 600 在最大化时此尺寸为 800 5XX 第四句 设置视口的范围 第二个参数为负数 表示视口坐标往下移了 cRect 高度的一半 第五句 将设备坐标转换成逻辑坐标 因为 GetClientRect 得到的设备坐标 第六句 设置设备上下文窗口的起始坐标 最后一句 在第六句的基础上 在逻辑坐标位置输出文本 abc 记住两个原则 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考研政治面试题库及答案
- 农业产业园项目2025年区域农业产业结构优化研究与效益评估
- 基于2025年视角的资源型城市产业升级与绿色发展报告
- 2025年特色主题餐厅餐饮市场区域差异与竞争策略研究报告
- 数字化驱动2025:公路货运行业效率提升与可持续发展报告
- 安全教育培训记录缺失课件
- 共享厨房在促进餐饮消费升级方面的实践与探索报告
- 服装设计师品牌方案
- 租赁物品使用协议格式
- 2025年医药电商平台药品供应链金融合规性分析与运营优化报告
- 德瑞斯D600变频器说明书
- 2025-2030年中国锂电池回收行业市场深度调研及前景趋势与投资研究报告
- 数字化教育资源在跨学科教学中的应用
- JG/T 127-2017建筑门窗五金件滑撑
- T/CGCC 7-2017焙烤食品用糖浆
- 2024福建农信社春季招聘笔试历年典型考题及考点剖析附带答案详解
- 医生重症医学科进修汇报
- DB13(J)-T 8389-2020 被动式超低能耗建筑节能工程施工及质量验收标准
- 月嫂 考试题及答案
- 物质安全资料脱模剂MSDS
- 2025年中国过敏性鼻炎市场研究报告
评论
0/150
提交评论