图形基础
涛儿软件工作室整理编译
图形设备接口(:)是 的子系统,它负责在视讯显示器和打
印机上显示图形。正如您所认为的那样, 是 非常重要的部分。不只您为 编写的应用
系统在显示视觉信息时使用 ,就连 本身也使用 来显示使用者接口对象,诸如菜单、滚动
条、图标和鼠标光标。
不幸的是,如果要对 进行全面的讲述,将需要一整本书-当然不是这本书。在本章中,我只是想向您提
供画线和填入区域的基本知识,这对于理解下面几章的 已经足够了。在后面几章中会讲述 支持的位
图、 以及格式化文字。
GDI 的结构
从程序写作者的观点来看, 由几百个函数呼叫和一些相关的数据型态、宏和结构组成。但是在开始讲述
这些函数的细节之前,让我们先从巨观上了解一下 的整体结构。
GDI 原理
和 中的图形主要由 动态链接库输出的函数来处理。在
中,这个 实际是利用 !" 位 #$# 动态链接库来执行许多函数。在
中,#$# 只用于 !" 位的程序。
这些动态链接库呼叫您安装的视讯显示器和任何打印机呼叫驱动程序中的例程。视讯驱动程序存取视讯显示器
的硬件,打印机驱动程序将 命令转换为各种打印机能够理解的代码或者命令。显然,不同的视讯显示卡
和打印机要求不同的设备驱动程序。
因为 %& 兼容机种上可以连接许多种不同的视讯设备,所以, 的主要目的之一是支持与设备无关的图形。
程序应该能够毫无困难地在 支持的任意一种图形输出设备上执行, 通过将您的程序
和不同输出设备的特性隔离开来的方法来达到这一目的。
图形输出设备分为两大类:位映像设备和向量设备。大多数 %& 的输出设备是位映像设备,这意味着它们以图
点构成的数组来表示图像,这类设备包括视讯显示卡、点阵打印机和激光打印机。向量设备使用线来绘制图像,
通常局限于绘图机。
许多传统的计算机图形程序设计方式都是完全以向量为主的,这意味着使用向量图形系统的程序与硬件有着一
定层次的隔离。输出设备用图素表示图形,但是程序与程序接口之间并不是用图素进行沟通的。您当然可以使
用 作为一个高阶的向量绘制系统,同时也可以将它用于比较低阶的图素操作。
从这方面来看, 和传统的图形接口语言之间的关系,就如同 & 和其它程序设计语言之间的关系
一样。& 以它在不同操作系统和环境之间的高度可移植性而闻名,然而 & 也以允许程序写作者进行低阶系统呼
叫而闻名,这些呼叫在其它高级语言中通常是不可能的。正如 & 有时被认为是一种「高级汇编语言」一样,
您可以认为 是图形设备硬件之间的一种高阶界面。
您已经看到, 内定使用图素坐标系统。大多数传统的图形语言使用「虚拟」坐标系,其水平和垂直
轴的范围在 ' 到 ()") 之间。虽然有些图形语言不让您使用图素坐标,但是 允许您使用两种