第5章 图形与文本.docVIP

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 图形与文本

第5章 图形与文本 我们知道,Windows操作系统相对于DOS操作系统一个很大的进步就在于Windows具有丰富的图形界面,使得应用程序与用户之间的交互变得方便、直观。本章主要向读者讲述如何给您的应用程序添加图形及文本,当然,在进行实例之前,有几个重要的概念必须要掌握清楚。 5.1 理解图形设备接口 Windows操作系统提供了一个图形用户界面GUI(Graphics User Interface),图形是组成Windows应用程序的主体,这些图形包括一般的几何图形、位图、光标形状,甚至文本。因此,为了实现Windows应用程序的图形化,Windows操作系统提供了大量的函数来实现绘图的要求,这些函数的集合,就称为图形设备接口GDI(Graphics Device Interface)。 GDI表示的是一个抽象的接口,通过该接口可以实现对图形的颜色、线条的粗细等属性的控制(甚至包括输出文字在内)。Windows图形设备接口提供了一种与设备无关的控制图形输出的方法,它屏蔽了许多硬件设备的差异,应用程序可以通过调用这些函数和硬件打交道,使得用户可以方便的在输出设备上绘图,而不用去考虑到底是哪个厂家生产的硬件。 简单的说,GDI就是应用程序和输出设备之间的中介。一方面,GDI向应用程序提供一个与设备无关的编程环境,另一方面,它又以设备相关的格式和具体的设备打交道。值得注意的是GDI是Microsoft Windows三个重要的动态链接库之一,这三个重要的动态链接库分别为:kernel.dll、User32.dll和GDI32.dll。 5.2 设备描述表 还记得上一章例子的EX04-01是怎么样将“Hello World”输出到窗口的吗?是通过一条语句:pDC-TextOut (0,0,Hello World!)来实现的。这里,应用程序并没有告诉系统用什么颜色、字体来输出,系统采用的是默认设置。那么这些默认的设置保存在哪儿呢?就是设备描述表。引用设备描述表这一概念是很有效的。那么它到底能带来哪些好处呢?我们知道字体的颜色、样式不会经常改变的,假定用户可能要输出1000个字符串,而它们都使用相同的字体和颜色,如果没有设备描述表,则每输出一个字符串,也就是每调用一次TextOut,就需要把字体和颜色作为参数传递进去,而这样做无非是浪费时间,为了避免这种无用的重复性工作,Windows把这些会重复的参数放到了设备描述表中,这样每次只需要多传入一个设备描述表的指针就可以了。 5.2.1 什么是设备描述表 当Windows要在显示器或其他设备上绘制图形或文本时,它不像DOS系统那样,把图形和文本直接输出到硬件,而是使用一个设备描述表来代替硬件设备的逻辑表示。 设备描述表(Device Context简称为DC),也称设备上下文、设备环境,是一种包含各种绘图属性(如前面所说的字体、颜色)和方法(即各种绘图函数)的数据结构,它定义了设备、画图工具和画图信息,它不仅可以绘制各种图形,而且还可以确定在应用窗口中绘制图形的方式和图形的样式。Windows所有的绘制操作及图形输出都必须通过设备描述表这一虚拟用户工作区来进行。用户在绘图之前,必须获取绘图窗口区域的一个设备环境DC,接着才能进行GDI函数的调用,执行适合于设备环境的命令。 MFC中的设备描述表类 需要注意的是,应用程序不能直接存取设备描述表,只能通过调用有关函数或使用DC的句柄(HDC)来间接的存取DC。设备描述表是一个对象,若要在图形设备上使用,首先必须构造一个DC对象或得到指向DC的指针。MFC库提供了不同类型的设备描述表类,每一个类都封装了代表WindowsDC的句柄(HDC)和函数。 在MFC库中,设备描述表被CDC类封装了起来,而CDC类下面又有4个派生类,这4个派生类各有特点,并可以完成不同的功能。 CClientDC 这是一个客户区设备描述表,提供对窗口客户区的图形访问。在窗口中画 图可使用这种DC,但对WM_PAINT消息除外。 CWindowDC 可以提供在整个窗口(包括客户区和非客户区)中画图的DC。 CPaintDC 这是创建响应WM_PAINT消息的DC。应用程序可以使用此CPaintDC更新Windows显示,通常在MFC应用程序的OnPaint函数中使用。 CMetaFileDC 这个设备描述表Windows元文件,它包含一系列命令以重新产生图像。想要创建独立于设备的文件时可使用这种DC。用户可以回放这种文件来创建图像。 以上分别讲述了这四种DC类的特点,下面介绍一下它们之间的区别。 CWindowDC类与CPaintDC和CClientDC类的区别: 绘图区域不同 用CPaintDC和CClientDC类的对象绘制图形时,绘制区只能是客

文档评论(0)

5201314118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065201001000004

1亿VIP精品文档

相关文档