不幸的是,如果要对GDI进行全面的讲述,将需要一整本书-当然不是这本书。在本章中,我只是想向您提供画线和填入区域的基本知识,这对於理解下面几章的GDI已经足够了。在後面几章中会讲述GDI支援的点阵图、metafile以及格式化文字。
GDI的结构
从程式写作者的观点来看,GDI由几百个函式呼叫和一些相关的资料型态、巨集和结构组成。但是在开始讲述这些函式的细节之前,让我们先从巨观上了解一下GDI的整体结构。
GDI原理
Windows 98和Microsoft Windows NT中的图形主要由GDI32.DLL动态连结程式库输出的函式来处理。在Windows 98中,这个GDI32.DLL实际是利用16位元GDI.EXE动态连结程式库来执行许多函式。在Windows NT中,GDI.EXE只用於16位元的程式。
这些动态连结程式库呼叫您安装的视讯显示器和任何印表机呼叫驱动程式中的常式。视讯驱动程式存取视讯显示器的硬体,印表机驱动程式将GDI命令转换为各种印表机能够理解的代码或者命令。显然,不同的视讯显示卡和印表机要求不同的装置驱动程式。
因为PC相容机种上可以连接许多种不同的视讯设备,所以,GDI的主要目的之一是支援与装置无关的图形。Windows程式应该能够毫无困难地在Windows支援的任意一种图形输出设备上执行,GDI通过将您的程式和不同输出设备的特性隔离开来的方法来达到这一目的。
图形输出设备分为两大类:位元映射设备和向量设备。大多数PC的输出设备是位元映射设备,这意味著它们以图点构成的阵列来表示图像,这类设备包括视讯显示卡、点阵印表机和雷射印表机。向量设备使用线来绘制图像,通常局限於绘图机。
许多传统的电脑图形程式设计方式都是完全以向量为主的,这意味著使用向量图形系统的程式与硬体有著一定层次的隔离。输出设备用图素表示图形,但是程式与程式介面之间并不是用图素进行沟通的。您当然可以使用Wi