Visual-C++2010第四讲-设备坐标空间.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Visual C++2010第四讲 设备坐标空间和映射模式 主讲 朱世华 参考文献 本讲参考:1./kzloser/archive/2012/11/01/2749852.html 2.visual C++.net 技术内幕 坐标空间 坐标空间 ? 定义:  一个坐标空间是一个平面的空间,通过使用两个相互垂直并且长度相等的轴来定位二维对象 分类: 世界坐标系空间:  应用程序运用世界坐标系空间对图形输出进行旋转、斜切或者反射 页面空间:  称为逻辑空间 设备空间:  称为逻辑空间 物理设备空间:  通常指应用程序窗口的客户区;但是它也包括整个桌面、完整的窗口(包括框架、标题栏和菜单栏)或打印机的一页或绘图仪的一页纸.物理设备的尺寸随显示器、打印机或绘图仪所设置的尺寸而变化 如下图所示: 开始空间 ? 若应用程序调用了SetWorldTransform函数,那么映射就从应用程序的世界坐标系空间开始 若应用程序没有调用了SetWorldTransform函数,映射在页面空间中进行 说明 ? 如要在物理设备上绘制输出,Windows把一个矩形区域从一个坐标空间拷贝到(或映射到)另一个坐标空间,直至最终完整的输出呈现在物理设备上(通常是屏幕或打印机) 在Windows把矩形区域的每一点从一个空间拷贝到另一个空间时,它采用了一种被称作转换的算法,转换是把对象从一个坐标空间拷贝到另一个坐标空间时改变(或转变)这一对象的大小、方位、和形态,尽管转换把对象看成一个整体,但它也作用于对象中的每一点或每条线 不同空间之间的转换 页面空间到设备空间的转换 ? 映射方式: 页面空间到设备空间的转换是原Windows接口的一部分.这种转换确定与一特定设备描述表相关的所有图形输出的映射方式.所谓映射方式是指确定用于绘图操作的单位大小的一种量度转换.映射方式是一种影响几乎任何客户区绘图的设备环境属性 缺省的映射模式为MM_TEXT.在这种映射模式下,逻辑单位和设备单位相同 四种设备环境属性: 页面空间,采用逻辑单位: 窗口原点? 窗口范围 设备空间,采用设备坐标: 视口原点 视口范围 以下四个图片来说明视口与窗口的关系: 相关的CDC成员函数 视口/窗口: 改变视口和窗口原点(CDC中提供了两个成员函数函数用来改变视口和窗口的原点) SetViewportOrg SetWindowOrg, 获得视口和窗口原点(CDC中提供了两个成员函数函数用来改变视口和窗口的原点) GetViewportOrg 相关的CDC成员函数(续一) GetWindowOrg, 注意:  不管对窗口和视口原点作什么改变,设备点(0,0)始终是客户区的左上角(即窗口显示的的左上角始终始终为设备点(0,0)) 说明:  页面空间到设备空间的转换所用的是两个矩形的宽与高的比率,其中页面空间中的矩形被称为窗口,设备空间中的矩形被称为视口,Windows把窗口原点映射到视口原点,把窗口范围映射到视口范围,就完成了这种转换,如上图 逻辑坐标/设备坐标 逻辑坐标/设备坐标: 逻辑坐标: “窗口”是基于逻辑坐标的,逻辑坐标可以是象素、毫米、英寸等单位 逻辑坐标/设备坐标使用规定 几乎在所有的GDI函数中使用的坐标值都是采用的逻辑单位.Windows必须将逻辑单位转换为“设备单位”,即像素.这种转换是由映射方式、窗口和视口的原点以及窗口和视口的范围所控制的 设备坐标: “视口”是基于设备坐标(象素)的.通常,视口和客户区是相同的. 逻辑坐标/设备坐标使用规定(续) Windows对所有的消息(如WM_SIZE、WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_LBUTTONUP),所有的非GDI函数和一些GDI函数(例如GetDeviceCaps函数),永远使用设备坐标 对应关系: 如果将视口原点设置为(xViewOrg,yViewOrg),则逻辑点(0,0)就会被映射为设备点(xViewOrg,yViewOrg).如果将窗口原点改变为(xWinOrg,yWinOrg),则逻辑点(xWinOrg,yWinOrg)将会被映射为设备点(0,0),即左上角 逻辑坐标和设备坐标的相互转换 逻辑坐标和设备坐标的相互转换: 非 MM_TEX T映射方式下的逻辑坐标和设备坐标的相互转化 窗口(逻辑)坐标转换为视口(设备)坐标的两个公式: xViewport=(xWindow-xWinOrg)*xViewExt/xWinExt+xViewOrg yViewport=(yWindow-yWinOrg)*xViewExt/xWinEx+yViewOrg 视口(设备)坐标转换为窗口(逻辑)坐标的两个公式: 逻辑坐标和设备坐标的相互转换(续) xWindow=(xViewPort-xViewOrg)*x

文档评论(0)

yyons2019 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档