对视区及窗口的理解.docVIP

  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文档。上传文档
查看更多
对视区及窗口的理解

一.窗口和视区定义上的区别 窗口定义:用户可以在输入的图形上选定一个观察区域。这个观察区域被称为窗口 视区定义:在图形输出设备上用来复制窗口内容的矩形区域被称为视区 关于窗口和视区的区别见  HYPERLINK /21cn/CADCAM/c4/4-4-1-1.htm /21cn/CADCAM/c4/4-4-1-1.htm 窗口和视区单位上的区别 窗口的单位是逻辑单位 视区的单位是像素 实例一:窗口是1000*1000,而视区是400*300,如果我们要画一个圆,那么在窗口上看到的是一个圆,但是将1000*1000窗口中的圆放到400*300的视区中时就会发现圆已经变成了椭圆. 代码如下: pDC-SetMapMode(MM_ANISOTROPIC); //设置映射模式 pDC-SetWindowExt(1000,1000); //设置窗口的范围 pDC-SetViewportExt(400,-300); //设置视区的范围 pDC-SetViewportOrg(200,150); //设置视口的原点 CPen myPen,*oldPen; myPen.CreatePen(PS_SOLID,1,RGB(0,0,255)); oldPen=pDC-SelectObject(myPen); CBrush myBrush,*oldBrush; myBrush.CreateSolidBrush(RGB(255,0,0)); oldBrush=pDC-SelectObject(myBrush); pDC-Ellipse(-500,-500,500,500); pDC-SelectObject(oldPen); myPen.DeleteObject(); pDC-SelectObject(oldBrush); myBrush.DeleteObject(); 运行如下: 因为我的电脑的分辨率是1366*768的,所以这个对话框还显示了其他部分.在图中以A为左上角顶点,以B为右下角的矩形就代表了400*300的视区,而在1000*1000的窗口上画了个半径为500的圆完全放在这个视区上就变成了椭圆.在这里我们就可以解释为什么视区的单位是像素,而窗口的单位却是逻辑单位(400*300的视区在屏幕上就是400像素*300像素,而1000*1000的窗口在屏幕上具体的宽度和高度却是受视区大小的影响,所以就不能用像素这样具体的单位来作为窗口单位.在这个例中1000*1000的窗口中宽度上一个单位是400/1000个像素,高度上一个单位是300/1000个像素). 对SetWindowExt,SetViewportExt和SetViewportOrg的理解 如上注释 SetWindowExt(X,Y)是设置窗口的宽度为X,高度为Y SetViewportExt(X,Y)是设置视区的宽度为X,高度为Y SetViewportOrg(x,y)是设置视区的原心是(x,y)坐标 不过我们在上面看到了SetViewportExt(X,-Y)这样的表述,其实它还是设置视区的宽度为X,高度为Y,不过这里的-号代表着Y轴的正方向与默认的方向(x轴是水平向右,y轴是竖直向下)相反. 对于SetViewportOrg(x,y)是设置视区的原心坐标在(x,y),这里的(x,y)是相对于视区默认的原点(视区这个矩形的左上角的顶点) 实例二: 代码如下: pDC-SetMapMode(MM_ANISOTROPIC); //设置映射模式 pDC-SetWindowExt(400,300); //设置窗口的范围 pDC-SetViewportExt(400,-300); //设置视区的范围 pDC-SetViewportOrg(200,-150); //设置视口的原点 CPen myPen,*oldPen; myPen.CreatePen(PS_SOLID,10,RGB(0,0,255)); //用新画笔替换原画笔,***同时将指向原画笔的指针返回给oldPen***,以备新画笔用完之后可以用oldPen来将设备上下文恢复原状 oldPen=pDC-SelectObject(myPen); pDC-MoveTo(-200,-150); pDC-LineTo(200,-150); pDC-SelectObject(oldPen); myPen.DeleteObject(); 运行如下: 参考: /pasan/blog/item/c95f3ba8e551c5b6cb130cb1.html

文档评论(0)

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

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

1亿VIP精品文档

相关文档