- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章图形和文本 8.1设备环境和简单数据类 8.2图形设备接口 8.3图形绘制 8.4字体与文字处理 Windows图形设备接口(GDI,Graphics Device Interface)是为与设备无关的图形设计的。 计算机输出设备和显示设备种类繁多,包括不同技术标准的显示器、打印机、绘图仪等,每类设备又包含许多不同的型号。为了适应不同的设备,Windows系统提供应用程序与具体设备分离的功能。 操作系统管理并协调一系列输出设备驱动程序,将应用程序的图形输出请求转换为打印机、绘图仪、显示器或其他输出设备上的输出。 GDI的设备无关性是Windows操作系统的特色之一。对于开发人员而言,所要做的工作仅仅是在系统的帮助下建立一个与某个实际输出设备的关联,以要求系统加载相应的设备驱动程序,其他的具体输出操作则由系统实现。Windows系统分担了应用程序的硬件设备适配器功能。 设备描述表是一个用来确定任何设备的GDI输出的位置和形象的属性的集合。 可以将设备描述表看成图形的“输出模板”。依靠这块模板,当程序员调用GDI函数输出图形或文字时,不必关心诸如背景颜色、字体等问题。 8.1设备环境和简单数据类 8.1.1设备环境和简单数据类 设备环境类CDC提供了绘制和打印的全部函数。为了能让用户使用一些特殊的设备环境,CDC还派生了CPaintDC、CClientDC、CWindowDC和CMetaFileDC类。 (1)??? CPaintDC比较特殊,它的构造函数和析构函数都是针对OnPaint进行的,但用户一旦获得相关的CDC指针,就可以将它当成任何设备环境(包括屏幕、打印机)指针来使用。CPaintDC类的构造函数会自动调用BeginPaint(应用程序响应WM_PAINT消息进行图形刷新时,由OnPaint()函数调用BeginPaint()函数获取设备环境指针,并把它传递给OnDraw()函数完成绘图.),而它的析构函数则会自动调用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设备环境和简单数据类 [例Ex_Draw] 通过设置窗口和视口大小来改变显示的比例。 (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); // 设置窗口范
您可能关注的文档
最近下载
- 邮储银行柜员培训课件.pptx VIP
- 2025年浙能集团甘肃有限公司、新能源项目(第二批)招聘17人笔试备考题库及答案解析.docx VIP
- 通威新员工入职培训第一次考试.docx VIP
- 2025广西专业技术人员公需科目培训考试答案(87分);广西“一区两地一园一通道”建设;人工智能时代(1).pdf VIP
- 入学证明怎么写(模板).docx VIP
- GBT 11345-2023 焊缝无损检测 超声检测 技术、检测等级和评定.pdf VIP
- 2025年浙能集团甘肃有限公司、新能源项目(第二批)招聘17人笔试参考题库附答案解析.docx VIP
- 解读《GB_T 44770-2024智能火电厂技术要求》全面解读.docx VIP
- 西安研学旅行策划书3篇.pdf VIP
- 建筑工程识图课件-建筑识图与构造课件.ppt VIP
文档评论(0)