小龙 Dev-C++ 用户手册

EGE 图形函数库简介

有很多初学者会注意到,在学习 C/C++ 语言的过程中所编写的程序总是单调的黑白文本界面,因此想要编写出图形界面的程序;而在《计算机图形学》课程中,教学重点是绘图算法,也需要良好的绘图编程环境。

在早期由 Borland 公司开发的 Turbo C 或 Borland C 中包含有一个名为“BGI”的图形函数库,可以用于简便地开发图形界面程序。在当代,也有多个图形函数库可供用户在 C/C++ 程序中编写图形界面。

EGE(Easy Graphics Engine,https://xege.org/)是 Windows 下的一个类似于 BGI 的面向 C/C++ 语言新手的免费、开源的图形函数库。它的使用方法与 BGI 相当接近,对新手非常友好,容易学习。即使是之前完全没有接触过图形编程的,也能迅速学会基本的绘图。而且该图形库功能完善,绘图效率高,灵活性强。

目前,EGE 图形库已经完美支持微软公司 Visual Studio 集成开发环境(包括且不限于以下版本:VC6、VC2008、VC2010)和以使用 MinGW 为编译器的集成开发环境(包括且不限于:C-Free、 Dev-C++、Code::Blocks、CodeLite、Eclipse for C/C++)。

在其它集成开发环境中可能需要按照 EGE 网站上的说明进行安装和配置,但是 小龙 Dev-C++ 5.16 已经在内部集成了 EGE v20.08 (2021年发行),在安装了 小龙Dev-C++ 之后就可以在程序中使用 EGE ,不需要用户额外安装和配置。

在小龙 Dev-C++ 5.16 中,用户用编写单文件程序或以项目形式进行多文件开发时都可以使用 EGE 图形函数库。具体方法如下。

一、在单文件程序开发中使用 EGE 图形函数库

(A)编写单文件程序时(普通编程者都用这种方法),如果需要使用 EGE 图形函数库,请把光标移到源代码头部空白处,然后点击工具栏上的“插入代码块”, 在弹出的列表中选择点击“EGE header”这一项,于是在光标所在处就插入了如下预处理命令行:

#include <egegraphics.h> //<graphics.h>
#pragma comment(lib, "libgraphics64 libuuid libmsimg32 libgdi32")
#pragma comment(lib, "libimm32 libole32 liboleaut32 libgdiplus")
#pragma comment(linker, "-mwindows")

这就是在单文件程序中使用 EGE 所需的预处理命令行。请注意的是,其中用 #include 命令所包含头文件名与 EGE 官方帮助文档中所说的头文件名 graphics.h 有所不同。这是小龙 Dev-C++ 中为了避免与其它库文件的头文件名混淆而故意把 graphics.h 改名 egegraphics.h, 所以在源程序中需要使用这个改名后的头文件名。

上面插入的后面三行预处理命令是用 #pragma comment 命令添加一些函数库和连接参数,以供连接时使用,这也是在单文件源程序中使用 EGE 所需的。 (EGE 官方帮助文档中并没有直接说到要求这样做,但是在小龙Dev-C++ 中确实需要这行预处理命令。)

在以上几行预处理命令下方就可以编写自己的程序了。例如下面是一个简单的 main 函数(可供用户测试):

int main() {
int width = 900, height = 600;
initgraph(width, height, !INIT_WITHLOGO); //Init EGE graphic window without logo

circle(width / 2, height / 2, 200);

getch();
closegraph();
return 0;
}

在 小龙 Dev-C++ 安装目录下的 Example 文件夹中,包含了几个使用 EGE 的单文件示例程序(它们的程序结构与上面插入的程序块都是类似的):

ege-circles.cpp:在屏幕上绘制一系列同心圆(这个程序以少量语句展示了 EGE 的基本用法,可作为 EGE 程序模板使用)

ege-clock.cpp:在屏幕上绘制模拟指针式时钟,并实时移动指针(展示了EGE的更多用法)。

ege-FiveStarFlag.cpp:按照国家规范绘制中华人民共和国国旗——五星红旗。

ege-Olympic.cpp:在屏幕上绘制奥林匹克五环旗(选择五种颜色并绘制五个圆)

 

常见问题 1:在网站上(例如 EGE 网站上的新手教程)或其它参考资料上看到一些使用 EGE 进行绘图的源程序,复制粘贴到 小龙Dev-C++ 并保存为源程序文件,编译时就报错“[错误] graphics.h: 没有这个文件或目录”,怎么解决?

解答:要想在程序中使用 EGE 进行绘图,在其它集成开发环境中是要求事先额外安装 EGE 并进行配置,而在 小龙Dev-C++ 中是已经集成了 EGE ,不需要额外安装和配置,但是在程序中必须要写上文所述的预处理命令行。所以,先删除原有的预处理命令行

#include <graphics.h>

然后再按上面所述,点击工具栏上的“插入代码块”, 选择点击“EGE header”,以插入所需的预处理命令行,然后就可以编译运行了。

常见问题 2 :在 EGE 官方文档中说到,在 Dev-C++ 中配置 EGE 时,需要手工给连接命令中添加连接参数“ -lgraphics64 -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32 -lgdiplus”。在 小龙Dev-C++ 中还需要这样设置吗?

解答:这里有两种处理策略(根据需要任选其一即可)。策略一:如果你只是编写少量几个使用 EGE 的程序,那么最好是在每个程序中按照前述说明插入了预处理命令行,就不需要手工添加连接参数了;策略二:如果你需要编写很多使用 EGE 的程序,那么可以手工给连接命令中添加这些连接参数,并在程序中用 #include 命令包含 <egegraphics.h> 。

 

二、建立项目进行多文件程序开发时使用EGE

在小龙 Dev-C++ 中建立项目进行多文件程序开发时(只有开发大型程序才这样做),请点击菜单“项目”下的“新建项目”,在所弹出的对话框中,在“多媒体”类别下面有“EGE”项目模板(其主程序的内容与 ege-circles.cpp 相同)。双击即可创建一个使用 EGE 的项目。

在项目中实际上有三处针对 EGE 进行了设置(模板中已经设置好了,不需要用户自己处理):

(1) 在项目的主程序中写了如下预处理命令行:

#include <egegraphics.h>

(2) 在“项目属性”的“基本”页中,“类型”被设定为“Win32 图形界面程序”;

(3) 在“项目属性”的“参数”页中,在“连接器”中已经添加了如下参数:

-lgraphics64 -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32 -lgdiplus -mwindows

 

 


文档编写者联系邮箱:anbangli@foxmail.com