第6章图形设备接口
第6章 图形设备接口
由于 Windows系统为基础操作系统和硬件之 间提供了图形用户接口(GU),因此图形是 Windows程序的主要组成部分。在当今的GUI操 作系统世界里图形学是十分重要的, Windows当 然也毫不例外。本章主要介绍在 Windows应用程 序实现中如何理解MFC的封装、设备描述表、图 形对象以及如何使用图形学的基本概念,讨论用 来显示绘图称之为设备描述表的数据类型和结构, 并描述用来建立 Windows图形的每个基础图形对 象
由于Windows 系统为基础操作系统和硬件之 间提供了图形用户接口(GUI),因此图形是 Windows程序的主要组成部分。在当今的GUI 操 作系统世界里图形学是十分重要的, Windows当 然也毫不例外。本章主要介绍在Windows应用程 序实现中如何理解MFC的封装、设备描述表、图 形对象以及如何使用图形学的基本概念,讨论用 来显示绘图称之为设备描述表的数据类型和结构, 并描述用来建立Windows图形的每个基础图形对 象
设备描述表与图形对象 当 Windows程序(包括 Windows自己)给显示器或其它别的输出设备(如 打印机)绘制文本和图形时,它不像DOS程序那样直接画到硬件上,而是 通过图形设备接口来实现绘制的。实际上,在 Windows世界里,直接写到 硬件上的应用程序被认为是禁忌,应用程序使用一个称之为设备描述表 (DC)的概念,它表示物理设备(如监视器、打印机、绘图仪或某个别的 物理设备)的逻辑形式。MFC提供几种DC的不同类型,在给设备绘制图形 前应用程序必须显式请求DC。 然而,设备描述表不仅限于物理设备,DC也可指逻辑设备。逻辑设 备的一个例子就是元文件。它是以与设备无关的格式存储图面的结构的集 合。另一个例子是位图,它是图形图像的像素集合。在位图上或元文件上 绘图如同在显示器上或打印机上绘图一样容易
设备描述表与图形对象 当Windows程序(包括Windows自己)给显示器或其它别的输出设备(如 打印机)绘制文本和图形时,它不像DOS程序那样直接画到硬件上,而是 通过图形设备接口来实现绘制的。实际上, 在Windows世界里, 直接写到 硬件上的应用程序被认为是禁忌, 应用程序使用一个称之为设备描述表 (DC)的概念, 它表示物理设备(如监视器、打印机、绘图仪或某个别的 物理设备)的逻辑形式。MFC提供几种DC的不同类型, 在给设备绘制图形 前应用程序必须显式请求DC。 然而, 设备描述表不仅限于物理设备,DC也可指逻辑设备。逻辑设 备的一个例子就是元文件。它是以与设备无关的格式存储图面的结构的集 合。另一个例子是位图,它是图形图像的像素集合。在位图上或元文件上 绘图如同在显示器上或打印机上绘图一样容易
Win32API提供四种类型设备描述表: 显示描述表。支持视频显示器上图形操作。 信息描述表。提供设备数据的检索。 内存描述表。支持位图上的图形操作 打印描述表。支持在打印机或绘图仪上的图形操作。 图形设备接口( Graphics Device Interface,简称GDD在 Windows 系统中用以扩展设备描述表,它是 Windows系统结构的主要组成 部分。在SDK程序里,DC作为参数发送至GD函数调用,以给 Windows提供要在上面绘图设备的特性说明。GD给 Windows提供 全部绘图功能;DC表示提供抽象层的设备,该抽象层使应用程 序与直接绘图到硬件上的有害性相隔离(图6-1)展示硬件抽象) 通过调用合适的设备驱动程序以响应 Windows图形函数调用的途 径,GD提供此隔离层
Win32 API 提供四种类型设备描述表: l 显示描述表。支持视频显示器上图形操作。 l 信息描述表。提供设备数据的检索。 l 内存描述表。支持位图上的图形操作。 l 打印描述表。支持在打印机或绘图仪上的图形操作。 图形设备接口(Graphics Device Interface ,简称GDI)在Windows 系统中用以扩展设备描述表,它是Windows系统结构的主要组成 部分。在SDK程序里,DC作为参数发送至GDI函数调用, 以给 Windows提供要在上面绘图设备的特性说明。GDI给Windows提供 全部绘图功能;DC表示提供抽象层的设备,该抽象层使应用程 序与直接绘图到硬件上的有害性相隔离(图6-1)展示硬件抽象)。 通过调用合适的设备驱动程序以响应Windows图形函数调用的途 径, GDI提供此隔离层
下面分别讲述各种GD对象和拥有的属性 CFont类:字体 CFont对象用于输出文字时选用不同风格和大 小的字体。可选择的风格包括:是否为斜体、粗体、字体名称、下 划线等。颜色和背景色不属于字体的属性。 CBrush类:刷子CBπush对象决定填充区域时所采用的颜色或 模板。对于一个固定色的刷子来讲它的属性为颜色,是否采用网格 和网格的类型如水平的,垂直的,交叉的等。你也可以利用8*8的位 图来创建一个自定义模板的刷子,在使用这种刷子填充时系统会利 用位图逐步填充区域 CPen类:画笔CPen对象在画点和画线时有用。它的属性包括 颜色,宽度,线的风格,如虚线,实线,点划线等。 CBitmap类:位图 CBitmap对象可以包含一幅图像,可以保存 在资源中。关于位图编程技术请见下一章 CRgn类:多边形CRgn对象是一种特殊的GD对象,该对象利用多边 形可以很好的限制作图区域或是改变窗口外型
下面分别讲述各种GDI对象和拥有的属性: l CFont类:字体CFont对象用于输出文字时选用不同风格和大 小的字体。可选择的风格包括:是否为斜体、粗体、字体名称、下 划线等。颜色和背景色不属于字体的属性。 l CBrush类:刷子CBrush对象决定填充区域时所采用的颜色或 模板。对于一个固定色的刷子来讲它的属性为颜色,是否采用网格 和网格的类型如水平的,垂直的,交叉的等。你也可以利用8*8的位 图来创建一个自定义模板的刷子,在使用这种刷子填充时系统会利 用位图逐步填充区域。 l CPen类:画笔CPen对象在画点和画线时有用。它的属性包括 颜色,宽度,线的风格,如虚线,实线,点划线等。 l CBitmap类:位图CBitmap对象可以包含一幅图像,可以保存 在资源中。关于位图编程技术请见下一章。 CRgn类:多边形CRgn对象是一种特殊的GDI对象,该对象利用多边 形可以很好的限制作图区域或是改变窗口外型