第1章 VGA 显示系统原理 1
1.1 PC 图形显示系统发展概况 1
1.1.1 主流系统的发展 1
1.1.2 其它产品的发展 3
1.1.3 发展中的问题——兼容性 4
1.2 VGA 显示器原理 5
1.2.1 单色阴极射线管显示器 5
1.2.2 彩色阴极射线管显示器 5
1.2.3 光栅扫描 6
1.2.4 分辨率 6
1.2.5 扫描频率 7
1.2.6 隔行扫描(interlaced) 7
1.2.7 屏幕尺寸 8
1.2.8 点距 8
1.2.9 荧光粉余辉 8
1.3 VGA 显示卡原理 9
1.3.1 VGA 的结构 9
1.3.2 VGA 显示模式 10
1.3.3 色彩表示方式 10
1.3.4 分辨率 11
1.3.5 图形模式 12
1.3.6 速度 14
1.3.7 编程接口 15
第2章 VGA 图形操作技术 16
2.1 显示存储器结构 16
2.1.1 如何读写显示存储器 16
2.1.2 位面技术及存储器分页 16
2.1.3 地址计算 17
2.1.4 数据格式 19
2.2 VGA 寄存器 19
2.2.1 概述 20
2.2.2 外部寄存器 20
2.2.3 CRT 控制器寄存器 21
2.2.4 定序器寄存器 24
2.2.5 图形控制器存器 25
2.2.6 属性控制器寄存器 28
2.2.7 数模转换器寄存器 30
2.3 视频 BIOS 30
2.3.1 概述 30
2.3.2 标准VGA BIOS 31
2.3.3 VESA 扩展 BIOS 37
2.4 兼容性 41
2.4.1 模式号 42
2.4.2 分页方式 43
2.4.3 换页操作 44
2.4.4 显示存储器容量检测 44
2.4.5 其它兼容性问题 45
第3章 程序设计基础 47
3.1 程序设计语言 47
3.1.1 C++ 47
3.1.2 嵌入汇编 48
3.1.3 程序编写说明 50
3.2 程序系统的内容及构成 50
3.3 图形显示程序设计 51
3.3.1 图形显示功能 51
3.3.2 功能与图形模式的关系 53
3.3.3 颜色处理 54
3.3.4 编程方案 55
3.3.5 若干基本函数的实现 60
第4章 256色模式的图形操作 65
4.1 概述 65
4.2 编程方案 65
4.3 点操作 67
4.3.1 操作步骤 67
4.3.2 程序 67
4.4 扫描线操作 69
4.4.1 操作步骤 69
4.4.2 程序 69
4.5 清屏 75
4.6 DAC色彩查找表 76
4.6.1 原理及操作技术 76
4.6.2 程序 76
4.6.3 应用 77
4.7 参数设置 79
第5章 16色模式的图形操作 81
5.1 概述 81
5.1.1 地址计算 81
5.1.2 寄存器操作策略 81
5.2 编程方案 82
5.3 写点 83
5.3.1 操作步骤 83
5.3.2 程序 84
5.4 读点 86
5.3.1 操作步骤 86
5.3.2 程序 86
5.5 画扫描线 87
5.5.1 操作步骤 87
5.5.2 程序 88
5.6 读扫描线 91
5.7 写扫描线 93
5.8 清屏 97
5.9 调色板操作 99
5.9.1 程序 99
5.9.2 使用方式 100
5.10 参数设置 102
第6章 真彩色模式的图形操作 103
6.1 概述 103
6.2 编程方案 103
6.3 点操作 105
6.3.1 地址计算 105
6.3.2 程序 105
6.4 扫描线操作 107
6.5 颜色变换 110
6.5.1 亮度变换 110
6.5.2 叠加写入 113
6.5.3 去除叠加 116
6.6 参数设置 119
第7章 高彩色模式的图形操作 120
7.1 概述 120
7.2 编程方案 120
7.3 颜色转换及当前颜色设置 123
7.3.1 15位色模式 123
7.3.2 16位色模式 124
7.4 点操作 126
7.4.1 地理计算 126
7.4.2 程序 128
7.5 扫描线操作 133
7.6 参数设置 136
第8章 扩展内存(XMS)操作技术 136
8.1 概述 136
8.1.1 PC 机的内存类型 137
8.1.2 扩展内存使用方法 138
8.1.3 XMS操作概述 138
8.2 XMS功能详解 144
8.3 程序设计 144
8.3.1 功能选择 145
8.3.2 对程序功能的处理 145
8.3.3 编程方案 145
8.4 程序 151
8.5 程序使用方式 152
第9章 基本绘图功能 152
9.1 概述 152
9.2 画直线 152
9.2.1 算法 152
9.2.2 画线程序 154
9.2.3 画矩形及多边形 156
9.3 画圆、画扇形 158
9.3.1 画圆算法 158
9.3.2 画圆程序 159
9.3.3 画扇形 159
9.4 画椭圆 162
9.4.1 算法 162
9.4.2 程序 163
9.5 区域填充 164
9.5.1 概述 164
9.5.2 填充原理及算法 165
9.5.3 区域填充基础程序 168
9.5.4 区域填充程序 181
9.5.5 区域填充程序使用示例 190
9.6 块操作 191
9.6.1 概述 191
9.6.2 使用常规内存的块操作程序 191
9.6.3 使用扩展内存的块操作程序 193
9.6.4 使用硬盘的块操作程序 195
9.6.5 块操作的统一的妆口 196
9.6.6 块操作使用示例 199
第10章 VGA图形显示小结 201
10.1 图形显示程序使用方式 201
10.1.1 基本使用方式 201
10.1.2 交替使用多种图形模式 201
10.1.3 图形模式的动态设置 202
10.2 扩展到新的图形模式 203
10.2.1 参数检测 203
10.2.2 支持256色、真彩色、高彩色的亲模式 204
10.2.3 支持16色的新模式 205
10.2.4 支持新的色极模式 206
10.3 显示速度测试 208
10.3.1 测试对象、环境及项目 208
10.3.2 测试方式及程序 208
10.3.3 测试结果及分析 212
10.3.4 速度的提高 214
第11章 字符显示 216
11.1 字库类型 216
11.2 字库结构及操作方式 218
11.2.1 各类字库的基本结构 218
11.2.2 ASCII点阵字库 219
11.2.3 BorlandC++的ASCII矢量字库 220
11.2.4 一种ASCII轮廓矢量字库 221
11.2.5 2.13的点阵字库 222
11.2.6 UCDOS的矢量汉字库 223
11.3 小汉字库 225
11.3.1 小字库的结构 226
11.3.2 小字库构造程序 227
11.3.3 小字库构造程序使用说明 236
11.4 字符显示程序设计 237
11.4.1 程序的功能 237
11.4.2 程序结构 237
11.4.3 类说明 238
11.5 点阵字符显示程序 244
11.6 矢量字符显示程序 260
11.7 程序使用方式 273
第12章 图形打印 275
12.1 图象缓存 275
12.1.1 为什么需要图象缓存 275
12.1.2 图象缓存的实现方案 275
12.1.3 图象缓存操作程序 277
12.2 EPSON.HP打印机上的图象打印 284
12.2.1 EPSON 系列打印机 284
12.2.2 HP 系列打印机 287
12.2.3 图象打印编程方案 289
12.2.4 图象打印程序 297
12.3 使用图形打印程序 298
第13章 鼠标驱动 300
13.1 概述 300
13.2 鼠标中断功能 300
13.3 扩展图形模式下鼠标光标的维持 304
13.3.1 维持鼠标光标的方法 305
13.3.2 光标显示基础程序 306
13.3.3 各种色彩模式下的光标显示程序 308
13.4 鼠标操作接口 313
13.4.1 事件 313
13.4.2 鼠标操作接口程序 318
13.5 键盘模拟鼠标 324
13.5.1 实现方式 324
13.5.2 程序 325
13.6 程序使用方式 330
第14章 屏幕漫游 333
14.1 屏幕漫游的原理及技术 333
14.1.1 屏幕漫游实现原理 333
14.1.2 实现方式 333
14.1.3 对屏幕漫游的限制 335
14.2 编程方案 335
14.3 程序 339
14.3.1 屏幕漫游基础程序 339
14.3.2 16色模式下的漫游程序 345
14.3.3 256 色模式下的漫游程序 347
14.3.4 高彩色模式下的漫游程序 350
14.4 程序使用方式 352
第15章 程序说明 354
15.1 软盘内容 354
15.1.1 安装 354
15.1.2 文件列表 354
15.2 类型说明 357
15.2.1 扩展内存类 357
15.2.2 图形模式类 358
15.2.3 字符显示类 363
15.2.4 图形打印缓存类 365
15.2.5 图象打印类 365
15.2.6 图象打印类 366
15.2.7 鼠标操作类 366
15.2.7 鼠标操作类 367
15.2.8 鼠标光标显示类 368
15.2.9 键盘模拟鼠标函数 369
15.2.10 漫游模式类 369
15.3 实用程序使用说明 370
15.3.1 VESA 图形模式检测程序 371
15.3.2 图形显示速度测试程序 371
15.3.3 小汉字库构造程序 372
15.3.4 大字打印程序 372
15.3.5 演示程序 372
参考文献 374