欢迎来到天天文库
浏览记录
ID:27382008
大小:288.01 KB
页数:31页
时间:2018-12-01
《《文本图形输出》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章文本、图形输出Windows图形设备接口GDI(GraphicDeviceInterface)提供了在Windows下绘图的基本功能。想要在Windows应用程序窗口中显示图形,必须使用GDI中的函数。而所有的绘制操作都是通过设备描述表进行的。Windows设备描述表DC(devicecontexts),是对各种不同设备的抽象,应用程序只要向DC输出,由DC负责处理不同设备的差异。本章将介绍VisualC++中,有关图形、文本输出显示的相关知识。9.1基础知识图形设备接口(GDI)和设备的驱动程序实现了设备无关性的图形的显示,而设备描述表(DC)则用来确定GDI输出的位置和形象
2、的属性。9.1.1GDI绘图的实现图形设备接口(GDI)可理解为一个可执行程序,它处理来自Windows应用程序的图形函数调用,然后把这些调用传递给合适的设备驱动程序,由设备驱动程序来执行与硬件相关的函数,并产生最后的输出结果。GDI可以看作是一个应用程序与输出设备之间的中介,一方面,GDI向应用程序提供了一个设备无关的编程环境,另一方面,它又以设备相关的格式和具体的设备打交道。9.1.2MFC图形对象类Windows提供了多种用于在设备描述表中进行绘制的图形对象,如画笔、位图、调色板、区域、路径等。MFC对Windows中的这些图形对象进行了封装,提供了等同于它们的图形对象类。(具
3、体内容请参照本书)9.1.3库存GDI对象Windows预定义了一些标准GDI对象,供系统和程序使用,称为库存GDI对象,它们可为多个程序同时使用。库存GDI对象包括最常用的字体、画笔、画刷等,9.1.4与图形绘制有关的简单数据类型在详细介绍使用设备描述表和GDI对象实现图形输出之前,首先介绍几个常用的与图形绘制有关的数据结构类。1.CPoint类2.CSize类3.CRect类4.RGB宏9.1.5MFC应用程序框架中的图形绘制与刷新在Windows应用程序中,通常在绘制图形之前调用BeginPaint函数,然后在设备描述表中进行一系列的绘制操作,最后调用EndPaint函数结束绘
4、制。MFC类CPaintDC封装了这一过程。在构造CPaintDC对象的同时,其构造函数自动调用BeginPaint函数;在消毁CPaintDC对象的同时,其析构函数自动调用EndPaint函数。9.2MFC设备描述表——CDC类在MFC中,CDC类封装了设备描述表(DC),该类的核心是m_hDC,代表一个指向窗口DC的句柄。具体使用时,MFC提供了几个常用的CDC类的派生类:CPaintDC、CClientDC和CWindowDC,它们的用法有着细微的差别。9.2.1CDC及其派生类CDC类派生自CObject,它具有CObject类的共同特性,如可以动态创建,可进行序列化操作。C
5、DC类既包括了设备属性又包括了绘图方法,通过此方法可以实现GDI的所有图形输出。9.2.2文本输出输出文本一般使用CDC::TextOut函数,它可以输出单行的文本,原型如下:BOOLTextOut(intx,inty,constCString&str)参数x和y为文本的输出位置坐标,参数str为要输出的文本内容。9.2.3CDC的常用绘图函数CDC类中提供了很多绘图函数,可以通过这些函数绘制点、线、矩形、圆、多边形等。9.3使用画笔和画刷进行绘图在Windows作图中,画笔和画刷是使用最多的GUI对象。绘制图形时,画笔负责绘制图形区域的边界,而画刷负责填充其内部区域。9.3.1画笔
6、对象及其使用MFC类CPen封装了GDI中的画笔对象,画笔对象代表了进行绘制时所用的线条。9.3.2使用画笔绘图实例下面给出一个使用不同类型画笔绘制图形的实例。通过本实例掌握画笔对象的使用和使用图形函数绘制图形。9.3.3画刷对象及其使用刷子对象用来在GDI输出时填充一个封闭图形的内部,如当画圆形或方形时,系统会用当前的刷子对内部进行填充。MFC类CBrush封装了标准的Windows刷子对象。创建画刷时,通常先定义一个CBrush对象,然后调用CreateSolidBrush、CreateaHatchBrush或CreatePatternBrush函数之一来定义画刷对象的属性。9.
7、3.4使用画刷绘图实例下面给出一个使用不同类型画刷绘制图形的实例,通过本实例掌握画刷对象的使用。(具体内容请参照本书)9.4字体对象MFC类CFont封装了Windows图形设备接口中的字体对象。字体对象决定的设备上下文中进行文本输出的字符样式。9.4.1字体对象的创建在使用字体对象的时候,一般先创建一个CFont对象,然后调用CreateFont、CreateFontIndirect和CreatePointFont之一的成员函数来对该字体对象进行初始化。
此文档下载收益归作者所有