- 0
- 0
- 约2.42万字
- 约 71页
- 2021-09-17 发布于安徽
- 举报
第8章 图形和文本概 述01设备环境类设备环境类为了能使用一些特殊的设备环境,CDC还派生了CPaintDC、CClientDC、CWindowDC和CMetaFileDC类。(1)CPaintDC比较特殊,它的构造函数和析构函数都是针对OnPaint进行的,但一旦获得相关的CDC指针,就可以将它当成任何设备环境(包括屏幕、打印机)指针来使用。CPaintDC类的构造函数会自动调用BeginPaint,而它的析构函数则会自动调用EndPaint。(2)CClientDC只能在窗口的客户区中进行绘图,原点(0,0)通常指的是客户区的左上角。而CWindowDC允许在窗口的任意位置中进行绘图,原点(0,0)是整个窗口的左上角。CWindowDC和CClientDC构造函数分别调用GetWindowDC和GetDC,但它们的析构函数都是调用ReleaseDC函数。(3)CMetaFileDC封装了在一个Windows图元文件中绘图的方法。图元文件是一系列与设备无关的图片的集合,由于它对图像的保存比像素更精确,因而往往在要求较高的场合下使用,例如AutoCAD的图形保存等。目前的Windows已使用增强格式(Enhanced-Format)的32位图元文件来进行操作。02坐标映射坐标映射在讨论坐标映射之前,先来看看下列语句:pDC-Rectangle(CRect(0,0,200,200));它是在某设备环境中绘制出一个高为200个像素,宽也为200个像素的方块。由于默认的映射模式是MM_TEXT,其逻辑坐标(在映射模式下的坐标)和设备坐标(显示设备或打印设备坐标系下的坐标)相等。因此这个方块在1024×768的显示器上看起来要比在640×480的显示器上显得小一些,而且若将它打印在600dpi精度的激光打印机上,这个方块就会显得更小了。为了保证打印的结果不受设备的影响,Windows定义了一些映射模式,这些映射模式决定了设备坐标和逻辑坐标之间的关系,如表8.1所示。映 射 模 式含 义MM_TEXT每个逻辑单位等于一个设备像素,x向右为正,y向上为正MM_HIENGLISH每个逻辑单位为0.001英寸,x向右为正,y向上为正MM_LOENGLISH每个逻辑单位为0.01英寸,x向右为正,y向上为正MM_HIMETRIC每个逻辑单位为0.01毫米,x向右为正,y向上为正MM_LOMETRIC每个逻辑单位为0.1毫米,x向右为正,y向上为正 MM_TWIPS每个逻辑单位为一个点的1/20(一个点是1/72 英寸),x向右为正,y向上为正MM_ANISOTROPICx,y可变比例MM_ISOTROPICx,y等比例坐标映射这样,就可以通过调用CDC::SetMapMode(int nMapMode)来设置相应的映射模式。例如,若将映射模式设置为MM_LOMETRIC,那么不管在什么设备中调用上述语句,都将显示出20毫米20毫米的方块。需要说明的是:(1)在MM_ISOTROPIC映射模式下,纵横比总是1:1,换句话说,无论比例因子如何变化,圆看上去总是圆的;但在MM_ANISOTROPIC映射模式下,x和y的比例因子可以独立地变化,即圆可以被拉扁成椭圆形状。(2)在映射模式MM_ANISOTROPIC和MM_ISOTROPIC中,常常可以调用CDC类的成员函数 SetWindowExt(设置窗口大小)和SetViewportExt(设置视口大小)来设置所需要的比例因子。这里的“窗口”和“视口”的概念往往不易理解。所谓“窗口”,可以理解成一种逻辑坐标下的窗口,而“视口”是实际看到的那个窗口,也就是设备坐标下的窗口。根据“窗口”和“视口”的大小就可以确定x和y的比例因子。坐标映射【例Ex_Scale】 通过设置窗口和视口大小来改变显示的比例① 用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_Scale。② 在CEx_ScaleView::OnDraw函数中添加下列代码:void CEx_ScaleView::OnDraw(CDC* pDC){ CEx_ScaleDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rectClient; GetClientRect(rectClient); // 获得当前窗口的客户区大小 pDC-SetMapMode(MM_ANISOTROPIC); // 设置MM_ANISOTROPIC映射模式 pDC-SetWindowExt(1000,1000); // 设置窗口范围 int nViewLength = rectClient.Width() / 2; // 一半宽度 int nViewHeight = rect
您可能关注的文档
- 《Verilog HDL数字设计与综合(第二版)》教学课件—第9章.实用建模技术.ppt
- 《Verilog HDL数字设计与综合(第二版)》教学课件—第10章.时序和延迟.ppt
- 《Verilog HDL数字设计与综合(第二版)》教学课件—第14章.使用Verilog HDL进行逻辑综合.ppt
- 《Visual C 实用教程(第6版)》教学课件—第1章 基本C++语言.pptx
- 《Visual C 实用教程(第6版)》教学课件—第2章 C++面向对象程序设计.pptx
- 《Visual C 实用教程(第6版)》教学课件—第3章 MFC基本应用程序的建立.pptx
- 《Visual C 实用教程(第6版)》教学课件—第4章 窗口和对话框.pptx
- 《Visual C 实用教程(第6版)》教学课件—第5章 常用控件.pptx
- 《Visual C 实用教程(第6版)》教学课件—第6章 基本界面元素.pptx
- 《Visual C 实用教程(第6版)》教学课件—第7章 文档和视图.pptx
最近下载
- 租房合同范本,租房租房合同范本.docx VIP
- 2024-2025学年八年级数学上册:全等三角形的判定(ASA与AAS) 知识梳理与讲解.pdf VIP
- 2026-2030中国沼气产业深度解析及发展前景对策建议研究报告.docx
- 2023年广西南宁市中考数学一模试卷.pdf VIP
- 场地设计真题06-09年.pdf VIP
- 广东省2025年初中学业水平考试地理真题(含答案).pdf VIP
- 广东省高考:2025年-2023年《生物》考试真题与参考答案.pdf
- 2025年烟叶评级技能竞赛理论参考试题库-上(单选题汇总).docx
- 《心脑血管类》课件.pptx VIP
- 化工单机设备试车方案与操作流程.docx VIP
原创力文档

文档评论(0)