Compatibility with BGI

使用 EasyX 绘图库有两种方式:

1. 引用 easyx.h 头文件。该头文件是 EasyX 绘图函数的声明,引用后可以直接调用 EasyX 绘图函数。

2. 引用 graphics.h 头文件。该头文件是对 easyx.h 的扩展,用于模拟额外的 BGI 函数。

本文讲解这两种方式和 BGI 绘图库的区别,以及这样设计的具体原因。(注:BGI 是 Borland 公司早期的绘图接口,在 Turbo C 和 Borland C/C++ 系列开发工具中广泛使用)

easyx.h 的应用场合

基于以下几个原因,EasyX 中声明的函数与 Borland BGI 绘图库中的有较大区别:

  • EasyX 曾经模拟了几乎所有的 BGI 绘图函数。但是在模拟的过程中,发现了一些 BGI 绘图库的不足。
  • BGI 的许多数据定义在 windows.h 中都有,只不过名字不同。记忆两套名字容易混淆,毕竟,BGI 绘图库已经是历史了。EasyX 库最大程度的复用了 Windows 中的定义。
  • BGI 绘图库中的函数命名缺乏规律性。
  • BGI 绘图库没有一套方便的帮助。当然,可以在 Turbo C 中查看帮助,但是该帮助文件并不能直接在 Windows 下打开,许多初学者也没有翻看 Turbo C 帮助的习惯。
  • Borland 早已停止更新 BGI,而 EasyX 还在不断完善,两者的差异会越来越大。

如果您之前没有使用过 BGI 绘图库,推荐引用 easyx.h 头文件。

graphics.h 的应用场合

graphics.h 在 easyx.h 的基础上,更多的模拟了 BGI 绘图库的函数(详见函数说明中的 graphics.h 新增函数)。

如果您试图编译 Turbo C 的绘图程序,或者参考一本陈旧的书,推荐引用 graphics.h 头文件。graphics.h 中的函数大部分都可以在 easyx.h 中找到对应,因此,引用 graphics.h 后同时也可以使用 easyx.h 中声明的函数。

不过,由于机制不同,如果您需要移植原 Turbo C 的绘图程序,还需要注意以下几个方面:

  • 颜色。EasyX 库支持了真彩色,这点与 TC 差别很大。
  • getimage / putimage,这组函数较 BGI 做了很多扩充。
  • 设置线性、填充类型的函数,和 BGI 的略有区别。
  • 位操作,BGI 的功能很局限,EasyX 库实现了所有的位操作。
  • 常量命名,EasyX 库多采用和 Windows 贴近的命名。
  • 其他扩充函数,例如鼠标、批操作等。