图形编程 PPT课件.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 图形编程 Windows应用程序在进行图形操作时,通过一种设备环境屏蔽了具体设备的差异,如显示器和打印机之间的不同,使得应用程序的绘图工作在设备环境提供的理想环境中。本章将详细介绍如何利用MFC中的图形类进行各种各样的图形输出,以及与图形有关的各种操作方式的使用。 8.1 绘制图形的相关知识 Windows应用程序在窗口内的绘图操作和与之相关的许多其他信息都是由图形设备接口负责,例如图形设备(打印机、显示器)的信息、绘图的坐标系统和映射模式、绘图工具的当前状态(什么样的画笔、画刷、文本的前景色与背景色、文本所使用的字体)等。 8.1.1 图形设备接口 图形设备接口(Graphics Device Interface),简称GDI,是Windows系统的核心部分之一。GDI管理着Windows应用程序的所有图形输出。也就是说它负责在显示器和打印机上显示图形包括显示在屏幕上的窗口、应用程序打印文档以及Windows系统本身显示的用户界面元素。 8.1.2 逻辑空间和设备空间 逻辑空间是一个理想的绘图空间。在这个空间里,程序员可以使用所有的颜色、所有的字体,可以在无限大的范围内输出。设备空间则是—个真实具体的世界,在这个空间中,只有有限的颜色可用于绘图、具有特定的输出格式以及有限的输出空间。 8.1.3 设备环境 设备环境(Device Context),简称DC,是由GDI创建的用于代表设备连接的数据结构。该数据结构包含了图形设备的绘制属性信息。GDI绘制调用都是借助于设备环境对象。该对象封装了用于画线、文本、图像等的Windows API。设备环境可以进行与设备无关的绘制,因此它既可以用于绘制屏幕,又可以用于绘制打印机,甚至元文件等。 8.1.4 一个简单的图形程序 为了理解利用MFC编制图形程序的过程,也为了进一步理解图形程序所用到的概念和原理,下面以一个简单的绘制线条程序为例,介绍利用SDK全局函数绘制线条的过程。 8.2 设备环境的相关类 MFC提供了一个CDC类,它封装了绘图所需要的所有成员函数和设备环境的所有功能。同时MFC还提供了几个CDC的派生类,用于具体绘图操作中。例如用于WM_PAINT消息响应中的CPaintDC类,用于窗口客户区的CClientDC类,以及用于整个Windows窗口的CWindowsDC类。下面在8.1.4节简单绘图程序的基础上,通过绘制不同区域的线条来了解这些与设备环境相关的类。 8.2.1 CDC类 对于CDC类的构造函数的定义,在MFC源文件WINGDI.CPP中,打开文件。 8.2.2 CPaintDC类 在第5章曾介绍过函数BeginPaint(),它只能在WM_PAINT消息的响应程序中使用。当用函数BeginPaint()得到设备环境句柄后,就可以在设备环境中进行一系列的绘图操作,最后必须采用函数EndPaint()来释放这个DC句柄。CPaintDC类则完全封装了这一过程,该类派生于CDC类。 8.2.3 CClientDC类 在第6章曾介绍过视图类窗口和框架类窗口,知道整个程序窗口就是框架窗口;而框架窗口的空白区,也就是客户区,才是视图类窗口。CClientDC类所封装的设备环境仅代表视图类窗口,也就是说只能在窗口的客户区进行图形绘制,该类派生于CDC类。 8.2.4 CWindowDC类 通过前几章学习知道窗口有客户区和非客户区之分,还知道可以利用BeginPaint()/EndPaint()或GetDC()/Release()在客户区上绘图。但到目前为止还不知道怎么在非客户区绘图,非客户区包括窗体标题栏、菜单、滚动条和框架。GetWindowDC()这个函数就能满足在非客户区绘图的要求,因为该函数可以获得整个窗口的设备句柄,包括客户区和非客户区,也就是说可以在一个窗体的任何位置进行绘图。CWindowDC类就是封装了这个过程,即GetWindowDC()函数是其成员函数,并且它也是派生于CDC类。 8.3 GDI对象 类对象关联了相应的设备环境句柄,就相当于有了一个理想的绘图环境。但还需要一些工具才能绘制出各种各样的图形,例如用画笔来画各式各样的线条,字体来显示不同的文本效果,这些工具称之为GDI对象。这些对象都派生于CGdiObject类。 8.3.1 GDI对象的种类 MFC对这些图形对象进行了封装,并提供了相对应的图形对象类,大概有6种类型的GDI对象,每种GDI对象都包含了一个与之对应的Windows句柄。表8.1列出了所有的GDI对象和与其对应的句柄。 8.3.2 GDI对象的生命周期 下面通过一个简单例子的例子看一下GDI对象的生命周期。 通常视图类的OnDraw用来完成图形的绘制,因此本示例就在函数OnDraw()内完成

文档评论(0)

炮灰团不辣哥 + 关注
实名认证
内容提供者

19 second-generation ID card. Go with a 2.

1亿VIP精品文档

相关文档