- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章图形与文本
第8章图形和文本 8.1设备环境和简单数据类 8.2图形设备接口 8.3图形绘制 8.4字体与文字处理 8.1设备环境和简单数据类 8.1.1设备环境和简单数据类 设备环境类CDC提供了绘制和打印的全部函数。为了能让用户使用一些特殊的设备环境,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位图元文件来进行操作。 8.1设备环境和简单数据类 8.1.2坐标映射 为了能保证打印的结果不受设备的影响,定义了一些映射模式,这些映射模式决定了设备坐标和逻辑坐标之间的关系,如表。 这样,我们就可以通过调用CDC::SetMapMode(int nMapMode)来设置相应的映射模式。 在MM_ISOTROPIC映射模式下,纵横比总是1:1;但在MM_ANISOTROPIC映射模式下,x和y的比例因子可以独立地变化,即圆可以被拉扁成椭圆形状。 在映射模式MM_ANISOTROPIC和MM_ISOTROPIC中,调用CDC:: SetWindowExt(设置窗口大小)和CDC::SetViewportExt(设置视口大小)函数来设置所需要的比例因子。 所谓“窗口”,可以理解成是一种逻辑坐标下的窗口,“视口”是实际看到的那个窗口。根据“窗口”和“视口”的大小就可以确定x和y的比例因子,它们的关系如下: x比例因子 = 视口x大小/ 窗口x大小 y比例因子 = 视口y大小/ 窗口y大小 8.1设备环境和简单数据类 (1)创建一个默认的单文档应用程序Ex_Draw。 (2)在CEx_DrawView::OnDraw函数中添加下列代码: void CEx_DrawView::OnDraw(CDC* pDC) { CEx_DrawDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rectClient; GetClientRect(rectClient); // 获得当前窗口的客户区大小 pDC-SetMapMode(MM_ANISOTROPIC); // 设置MM_ANISOTROPIC映射模式 pDC-SetWindowExt(1000,1000); // 设置窗口范围 pDC-SetViewportExt(rectClient.right,-rectClient.bottom);// 设置视口范围 pDC-SetViewportOrg(rectClient.right/2,rectClient.bottom/2); pDC-Ellipse(CRect(-500,-500,500,500)); } (3)编译运行,如图。 8.1设备环境和简单数据类 8.1.3CPoint、CSize和CRect CPoint、CSize和CRect类的构造函数 CPoint类带参数的常用构造函数原型如下: CPoint( int initX, int initY ); CPoint( POINT initPt ); CSize类带参数的常用构造函数原型如下: CSize( int initCX, int initCY ); CSize( SIZE initSize ); CRect类带参数的常用构造函数原型如下: CRect( int l, int t, int
您可能关注的文档
- 第50章 骨与软骨.doc
- 第4章_MATLAB计算的可视化与GUI设计.ppt
- 第5.2课尊重与维护隐私权的课件ppt.ppt
- 第5-6章_建设工程监理与设计合同管理.ppt
- 第5章 文档与视.ppt
- 第3节植物病虫害的防治原理与方法.ppt
- 第5章 元件与实例的使用.ppt
- 第3章管理文件夹与文件.doc
- 第5章 管段流量管径与水头损失.ppt
- 第5章 Windows 2000 Server 用户与组管.ppt
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
最近下载
- 会计学原理23版 英文版课件WildFAP23eCh05PPT.pptx
- 华为公司职类职种职级体系的划分及职业发展通道设计.pdf VIP
- 建筑解析流水别墅.pptx
- 2025届高三英语复习语法填空专题(24张PPT).pptx VIP
- 基于PLC的磨矿控制系统设计.docx
- 有限元分析论文.doc VIP
- 苏教版小学科学五年级上册第四单元《水在自然界的循环》大单元教学设计(含练习).docx
- 聚氯乙烯热收缩膜标签验收标准.doc VIP
- 2023年安徽省高中学业水平合格性考试数学试卷真题(含答案详解) (2).pdf VIP
- 2025届江苏省南菁高级中学物理高一第一学期期中达标检测模拟试题含解析.doc
文档评论(0)