- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VisualC60程序设计第8章
8.1 综 述 在应用程序中,为了使用户界面更加美观、生动或者需要用户手动在客户区生成图像,都要用到绘图。Windows的GDI(设备图形接口)提供了绘图的基本工具,如画点、线、多边形、位图以及文本输出等。MFC的设备环境类CDC封装了全部的绘图函数,使得绘制的图形既可以显示,又可以打印。在MFC中,用视图类Cview成员函数OnDraw( )来完成图形与文本的显示,用CWnd类的成员函数OnPaint( )重绘窗口。 8.1.1 设备环境和CDC类 1.设备环境 在Windows显示工作室基于设备环境(DC,Deviece Context),它是一种数据结构。当想要在窗口的工作区中绘制图形,或者将工作区中的数据打印出来时,都必须先获得一个设备环境。设备环境中所谓的“设备”,泛指各种与数据输出有关的设备,如打印机、屏幕等,以及各种特定形式的文件,如BMP文件。而“环境”一词,指将输出到设备的相关数据。当需要将建立的数据输出到设备时,就需要为这个设备准备一个DC,以便存储想要输出的数据,而这些数据就是GDI函数绘图的结果。 因此,设备环境(DC)是应用程序与设备驱动程序和输出设备之间的连接桥梁。从Windows程序开始,经过适当的设备驱动程序,最后到达窗口客户区。设备环境还完全定义了设备驱动程序的状态。在应用程序向窗口客户区输出信息之前,必须先获得一个设备描述表。如果没有,则应用程序和窗口间就无法建立联系。 在应用程序中,设备环境的各种特性和方法封装在CDC(设备环境类)中。CDC类是应用程序关于绘图类的基类。MFC库从CDC类派生出几个具体的设备描述表类,它们是CClientDC,CPaintDC,CWindowDC。任何一个具体的绘图操作都要用他们中的一个声明设备对象,才能进行绘图操作。 有关设备环境有三个直接相关的类CDC、CPaintDC、CclienDC,类CDC是 在MFC中创建设备上下文对象的基类,CDC、CGdiObject类的继承关系如图8-1所示。 图8-1 CDC、CgdiObject类的继承关系 2.CDC类 1) 设备环境CDC类 基于MFC的Windows编程中总是选择一个MFC类对设备环境进行访问。?MFC提供集中不同的设备环境类,CDC是设备环境的基类。基类和派生类只有构造函数和析构函数不同。 (1) CClientDC类:只能在窗口的用户区绘图。用户区指窗口区域中除去边框、标题栏、菜单栏、状态栏等以外的部分。坐标(0,0)通常指用户区的左上角。如果使用CClientDC在视图中绘图,绘图区域不包括文档窗口的边框、标题栏、菜单栏、状态栏;如果在对话窗口中绘图,绘图区域不包括对话框的边框和标题条。在使用CClientDC绘图时,通常先调用窗口的GetClientRect( )来获取用户区的大小。 (2) CPaintDC类:往往在OnPaint( )函数中使用。 OnPaint( )函数首先构造一个CpaintDC对象,再调用OnPrepareDC( )函数将其准备好,最后以这个准备好的CpaintDC对象指针为参数,来调用OnDraw( )函数进行绘图。 2) 设备环境类CDC的常用函数介绍 设备环境类CDC的内容十分丰富,涵盖了有关绘图的各个方面。如:绘图状态管理包括背景色、前景色、线宽、线型、填充模式、字体、字号等。MFC中的绘图操作都封装在CDC中,其中有像素操作、填充操作、画线操作、画矩形、画圆形、画椭圆操作、位图操作等,另外还有字符显示、区域的运算及操作等。 常用的CDC函数如表8-1所示。 8.1.2 GDI对象 在Windows应用程序中,绘图工作是由Windows API中的GDI函数来完成的。GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。 在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便地在屏幕、打印机及其他输出设备上输出图形、文本等操作。GDI的出现使程序员无需关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。 MFC提供了5种GDI类,他们分别是CBitmap、CPen、CBrush、CFont、CRgn以及CPalette。他们都派生于CGdiObject类,如图8-2所示。 5种GDI类分别说明如下。 CBitmap:用于建立操作位图的对象; CPen:用于建立操作画笔的对象; CBrus
文档评论(0)