




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 文本、图形输出,Windows图形设备接口GDI(Graphic Device Interface)提供了在Windows下绘图的基本功能。想要在Windows应用程序窗口中显示图形,必须使用GDI中的函数。而所有的绘制操作都是通过设备描述表进行的。Windows设备描述表DC(device contexts),是对各种不同设备的抽象,应用程序只要向DC输出,由DC负责处理不同设备的差异。本章将介绍Visual C+中,有关图形、文本输出显示的相关知识。,9.1 基础知识,图形设备接口(GDI)和设备的驱动程序实现了设备无关性的图形的显示,而设备描述表(DC)则用来确定GDI输出的位置
2、和形象的属性。,9.1.1 GDI绘图的实现,图形设备接口(GDI)可理解为一个可执行程序,它处理来自Windows应用程序的图形函数调用,然后把这些调用传递给合适的设备驱动程序,由设备驱动程序来执行与硬件相关的函数,并产生最后的输出结果。GDI可以看作是一个应用程序与输出设备之间的中介,一方面,GDI向应用程序提供了一个设备无关的编程环境,另一方面,它又以设备相关的格式和具体的设备打交道。,9.1.2 MFC图形对象类,Windows提供了多种用于在设备描述表中进行绘制的图形对象,如画笔、位图、调色板、区域、路径等。MFC对Windows中的这些图形对象进行了封装,提供了等同于它们的图形对象
3、类。(具体内容请参照本书),9.1.3 库存GDI对象,Windows预定义了一些标准GDI对象,供系统和程序使用,称为库存GDI对象,它们可为多个程序同时使用。库存GDI对象包括最常用的字体、画笔、画刷等,,9.1.4 与图形绘制有关的简单数据类型,在详细介绍使用设备描述表和GDI对象实现图形输出之前,首先介绍几个常用的与图形绘制有关的数据结构类。 1CPoint类 2CSize类 3CRect类 4RGB宏,9.1.5 MFC应用程序框架中的图形绘制与刷新,在Windows应用程序中,通常在绘制图形之前调用BeginPaint函数,然后在设备描述表中进行一系列的绘制操作,最后调用EndPa
4、int函数结束绘制。MFC类CPaintDC封装了这一过程。在构造CPaintDC对象的同时,其构造函数自动调用BeginPaint函数;在消毁CPaintDC对象的同时,其析构函数自动调用EndPaint函数。,9.2 MFC设备描述表CDC类,在MFC中,CDC类封装了设备描述表(DC),该类的核心是m_hDC,代表一个指向窗口DC的句柄。具体使用时,MFC提供了几个常用的CDC类的派生类:CPaintDC、CClientDC和CWindowDC,它们的用法有着细微的差别。,9.2.1 CDC及其派生类,CDC类派生自CObject,它具有CObject类的共同特性,如可以动态创建,可进行
5、序列化操作。CDC类既包括了设备属性又包括了绘图方法,通过此方法可以实现GDI的所有图形输出。,9.2.2 文本输出,输出文本一般使用CDC:TextOut函数,它可以输出单行的文本,原型如下: BOOL TextOut( int x, int y, const CString,9.4.3 字体对象使用实例,下面给出一个使用字体对象创建字体进行文本输出的实例。通过本实例掌握字体对象的创建和使用以及字体信息的获取。 启动Visual C+6.0,利用AppWizard创建一个基于单文档的MFC应用程序“Ch9Demo5”,,9.5 位图和区域对象,使用Visual C+进行图形图像输出及其相关的
6、操作中,位图和区域对象也经常用到。本节将围绕这三个对象的具体应用进行讨论。,9.5.1 设备相关位图(DDB),Windows中图像的显示一般是将预先准备好的图像复制到显示区域中,这样便于提高图像的显示速度。Windows提供了两种使用图形拷贝的方法:通过设备相关位图(DDB)和设备无关位图(DIB)。(具体内容请参照本书),9.5.2 CBitmap应用实例,下面给出一个使用CBitmap对象实现在客户窗口中进行位图显示的实例。通过本实例掌握CBitmap对象的创建和以及位图显示的方法。 启动Visual C+6.0,利用AppWizard创建一个基于单文档的MFC应用程序“Ch9Demo6
7、”。利用上节介绍的方法,向工程添加位图资源“IDB_BITMAP1”,将已有的图形文件“飞机4.bmp”导入。,9.5.3 设备无关位图(DIB),针对DDB的不足,从Windows 3.0开始引入了与设备无关的位图(DIB),提供了适用于交换的图像格式。此种格式的位图特点是:它自带颜色信息,因此是设备无关的,它通常以BMP为文件扩展名。,9.5.4 区域对象(CRgn),区域是指一个矩形、椭圆形、多边形,或者两个及两个以上图形的组合图形。它可以被填充、涂色、反转、执行击中测试(测试光标的位置)等。,9.5.5 CRgn应用实例,下面给出一个CRgn对象的应用实例。本实例将创建一个椭圆区域和一
8、个多边形区域,而后通过区域操作获取其交集和交集以为的区域,分别用不同的画刷填充。当鼠标在这两个区域单击左键时,分别给出不同的提示信息。,9.6 坐标系统与映射模式,到现在为止,前面所有的图形输出都是以像素为单位,相对于客户区的左上角的坐标系统,这是默认的方式。Windows提供了几种映射模式,每一种映射都对应着一种坐标系统,本节将详细介绍有关坐标系统与映射模式的使用。,9.6.1 坐标系统,GDI绘图操作实际上用到了两种类型的坐标系统:逻辑坐标和物理坐标(也称为设备坐标)。,9.6.2 映射模式,映射模式定义了Windows如何将GDI函数中指定的逻辑坐标映射为物理坐标。Windows默认的映
9、射模式为MM_TEXT映射模式。在这样的坐标系统中,向右的方向为x轴的正方向,向下的方向为y轴的正方向。无论是x方向还是y方向,每一个单位长度都代表设备上的一个像素。(具体内容请参照本书),9.6.3 自定义映射模式,在很多情况下,使用系统预定义的映射系统非常的恰当,但有时也需要用户自己定义映射模式更为方便。如编写一个绘制函数图形的应用程序,把整个屏幕映射为一个平面直角坐标系会更加的恰当。 使用如下函数调用就可以指定自定义的映射模式: dc.SetMapMode(MM_ANISOTROPIC); (具体内容请参照本书),9.6.4 坐标映射使用实例,下面给出一个坐标映射的使用实例。通过自定义映射模式,将客户窗口映射为一个平面直
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年自动磨粉机项目投资价值分析报告
- 2025至2030年罐头设备项目投资价值分析报告
- 零售门店营运培训方案
- C语言程序设计教学课件
- 防火于未燃争做消防蓝-高一上学期消防安全主题班会课件
- 安全风险分级管控与事故隐患排查治理相关术语概念及关联
- 《无人机组装与调试》完整版第2节
- 2025至2030年暖瓶壳项目投资价值分析报告
- 2025至2030年带式输送机断带自动检测装置项目投资价值分析报告
- 2025至2030年室外三鉴微波探测器项目投资价值分析报告
- 共享农田合作合同协议书
- 风电基础合同
- 三级安全培训考试题附参考答案(完整版)
- 庄子:当我们无路可走的时候(原文)
- DB51-T 3176-2024 四川省中心乡镇消防救援站建设规范
- DB11T 2279-2024 社会单位消防安全评估规范
- 养生理疗馆门店管理手册02
- 店里装修合同范本
- 酒店品牌建设与管理教案
- QB/T 2660-2024 化妆水(正式版)
- 国家湿地公园科普宣教规划方案
评论
0/150
提交评论