1. 为什么选择Dev-C++和EasyX?给初学者的第一份礼物
如果你刚开始学C或C++,想写点好玩的东西,而不是整天对着黑乎乎的控制台输出“Hello World”,那你来对地方了。我当年也是这么过来的,觉得编程有点枯燥,直到我发现了图形编程这个新大陆。而Dev-C++加上EasyX,就是进入这个新大陆最平易近人的一张船票。
Dev-C++是个老牌的C/C++集成开发环境(IDE),它非常轻量,安装包小,启动快,对电脑配置要求极低。对于初学者来说,它没有Visual Studio那么庞大复杂,不会让你在安装和配置上就耗光所有热情。它的界面简单直接,就是写代码、编译、运行,没有太多花里胡哨的东西干扰你的注意力。我至今还记得第一次用它成功运行程序时的成就感,那种纯粹的“编码-结果”的反馈,对建立初学者的信心特别有帮助。
那EasyX又是什么呢?你可以把它理解为一个给C/C++初学者准备的“图形外挂”。标准的C/C++库本身并不直接支持在窗口里画图、显示图片、处理鼠标点击这些操作,想要实现这些,通常需要去学习像Windows API或者OpenGL这样的底层接口,门槛一下子就高起来了。EasyX的厉害之处在于,它把这些复杂的底层操作封装成了极其简单的函数。比如,你想画个圆,不用管什么设备上下文、画笔句柄,直接写一个 circle(320, 240, 100) 就行了,意思是“在坐标(320,240)的位置画一个半径100的圆”。这种直观性,让编程从抽象的字符变成了可视化的创作,乐趣倍增。
把它们俩结合起来,意义就大了。你可以在一个轻量、易上手的开发环境里,直接调用简单易懂的图形函数,快速做出带图形界面的小游戏、动画演示或者数据可视化的小工具。这种即时、可视的正反馈,是保持学习动力的最好燃料。我见过很多学生,因为用EasyX做出了第一个会动的小球或者第一个简陋的打飞机游戏,而对编程产生了浓厚的兴趣,从此走上了技术之路。所以,这份配置指南,就是帮你扫清第一个障碍,让你能尽快体验到图形编程的乐趣,而不是在环境配置上反复踩坑。
2. 搭建你的编程舞台:Dev-C++的下载与安装详解
工欲善其事,必先利其器。咱们第一步就是把Dev-C++这个“器”给准备好。这里有个关键点,网上Dev-C++版本很多,但为了和EasyX完美兼容,我强烈推荐你使用 Dev-Cpp 6.3 (TDM-GCC 9.2) 这个特定版本。这个版本内置的编译器(TDM-GCC 64位)和EasyX的适配库匹配得最好,能避免绝大多数稀奇古怪的编译错误。你认准它的红色图标就行,这是它的一个明显标志。
2.1 获取正确的安装包
最靠谱的下载地址是它的官方发布页面。你可以直接访问SourceForge这个开源软件托管平台上的项目页。为了避免你手动输入出错,我把核心信息告诉你:在SourceForge上搜索 “Embarcadero Dev-Cpp”,找到版本6.3,里面会有一个名为 Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe 的文件,这就是我们需要的安装程序。文件大小大概在80MB左右,下载起来很快。
这里我分享一个我自己的小习惯:在下载这种开发工具时,我总会在D盘或E盘专门创建一个名为“DevTools”的文件夹,然后把所有安装包都存到这里面。这样以后重装系统或者查找起来特别方便,不会东一个西一个。你可以参考这个做法。
2.2 一步步安装,避开那些“坑”
双击运行下载好的安装程序,安装过程本身是傻瓜式的,但有几个步骤值得你留意。
首先,语言选择“English”就好,保持默认。接着是许可协议,点击“I Agree”。到了选择组件(Choose Components)这一步,非常重要:请务必确保“TDM-GCC 64-bit Compiler”这一项是被选中的。这个编译器是我们的核心,EasyX库就是为它准备的。通常默认就是选中的,但你检查一下准没错。
接下来是选择安装路径。这里就是第一个容易踩坑的地方。强烈不建议安装在C盘的默认“Program Files”目录下! 为什么?因为“Program Files”目录有严格的系统权限保护,以后我们往编译器目录里拷贝EasyX的头文件和库文件时,可能会因为权限不足而失败,导致各种“Permission denied”错误。我的建议是,在C盘或D盘的根目录,或者在一个没有空格和中文的路径下,新建一个文件夹,比如 D:\Dev-CPP,然后安装到这里。路径简单清晰,权限也充足,后续配置会顺畅很多。
安装过程很快,完成后会问你是否要运行Dev-C++,可以先取消,因为我们还要进行关键的配置。现在,你的编程舞台——Dev-C++ IDE就已经静静地躺在你的电脑里了。你可以打开它看看,界面虽然复古但很清爽。先别急着写代码,咱们还得请上另一位主角:EasyX图形库。
3. 引入图形魔法:EasyX图形库的获取与解压
现在主角之一的Dev-C++已经就位,接下来就是请出另一位重量级嘉宾——EasyX图形库。你可以把它想象成一套给Dev-C++这个舞台准备的、功能强大的“灯光和布景”工具箱,有了它,你的程序才能从黑白命令行变成彩色的图形窗口。
3.1 找到正确的EasyX版本
这里有一个至关重要的版本对应关系:我们之前安装的Dev-C++ 6.3内置的是TDM-GCC 64位编译器(版本9.2)。因此,我们不能下载通用的EasyX for Visual Studio版本,必须下载专门为MinGW/GCC编译器适配的版本。截至我写这篇文章时,最新的适配版本是 easyx4mingw_20220901.zip。这个“4mingw”就在名字里,指明了它是给MinGW(GCC在Windows上的移植版本)用的,TDM-GCC也属于这个大家庭。
你可以在EasyX的官方网站上找到这个版本的下载链接。通常它在下载页面会有明确的分类。下载下来的是一个ZIP压缩包,大概几百KB,非常小巧。
3.2 解压与认识库文件结构
下载完成后,不要双击压缩包在里面操作。我建议你在“DevTools”文件夹或者D盘根目录下,新建一个名为“EasyX”的文件夹,然后把整个 easyx4mingw_20220901.zip 压缩包解压到这个文件夹里。这样做的好处是,所有相关文件都规整在一起,以后查找或管理都很清晰。
解压后,你会看到里面有以下几个关键的文件夹和文件,我们来认识一下它们:
include/文件夹:这里面放着“头文件”(.h文件)。头文件就像是工具箱的说明书,告诉编译器我们的图形函数(如circle,line)长什么样、该怎么用。最重要的两个是easyx.h和graphics.h。我们写程序时,只需要在代码开头#include <graphics.h>就可以了,它会自动包含核心功能。lib64/文件夹:这里面放着“库文件”(.a文件)。库文件是编译好的二进制代码,是工具箱里的实际工具。对于64位的TDM-GCC,我们需要的是lib64/libeasyx.a这个文件。这个文件包含了所有图形函数的具体实现。lib/文件夹:这里面是给32位编译器用的库文件(libeasyx.a),我们这次用不到。- 可能还有一些文档(
docs/)和示例代码(samples/),这些是你入门后极好的学习资料,可以先留着。
理解头文件和库文件的关系,对你以后学习其他第三方库也很有帮助。简单说,#include 是引入声明(说明书),而链接库(-leasyx)是告诉编译器去哪里找具体的实现代码(工具本身)。两者缺一不可。现在,我们已经把EasyX这个“工具箱”准备好了,下一步就是把它正确地交给Dev-C++(或者说它背后的编译器)来使用。
4. 核心操作:在Dev-C++中精准配置EasyX
这是整个配置过程最核心、也最容易出错的一步。别担心,只要跟着步骤一步步来,理解每一步在做什么,你就能稳稳地搞定。我们的目标,就是把刚才解压的EasyX“工具箱”,放到Dev-C++的编译器能够找到的地方。
4.1 定位你的编译器安装目录
首先,我们需要找到Dev-C++自带的TDM-GCC编译器究竟装在了你电脑的哪个位置。这就像你要去朋友家做客,总得先知道他住哪儿。打开你安装好的Dev-C++,在顶部菜单栏找到“Tools”(工具),然后选择“Compiler Options”(编译选项)。
在弹出的窗口里,你会看到“Compiler”下面有一个路径。这个路径通常指向一个名为 TDM-GCC-64 的文件夹。比如,如果你按照我的建议安装到了 D:\Dev-CPP,那么这个路径很可能就是 D:\Dev-CPP\TDM-GCC-64。请把这个路径记下来,我们称它为 [你的编译器根目录]。接下来的操作都要基于这个路径。
4.2 拷贝头文件(“说明书”到书架)
头文件(.h文件)需要被放到编译器的“包含目录”里。这样,当你在代码中写下 #include <graphics.h> 时,编译器才知道去哪里找这个文件。
- 打开你刚才解压EasyX的文件夹,进入
include子文件夹。 - 你会看到
easyx.h和graphics.h等文件。选中它们并复制。 - 打开你的编译器目录
[你的编译器根目录],然后依次进入x86_64-w64-mingw32->include文件夹。这个include文件夹就是编译器查找标准头文件(如stdio.h)的地方。 - 将复制的
easyx.h和graphics.h粘贴到这个include文件夹内。
4.3 拷贝库文件(“工具本体”到仓库)
库文件(.a文件)需要被放到编译器的“库目录”里。这样,链接器在最后把程序“组装”起来时,才能找到EasyX的具体实现代码。
- 回到EasyX解压文件夹,进入
lib64子文件夹(因为我们用的是64位编译器)。 - 你会看到
libeasyx.a这个文件,选中并复制它。 - 打开你的编译器目录
[你的编译器根目录],然后依次进入x86_64-w64-mingw32->lib文件夹。 - 将
libeasyx.a粘贴到这个lib文件夹内。
4.4 配置项目链接器设置(告诉编译器用这个“工具箱”)
这是最后一步,也是让Dev-C++项目知道“我要使用EasyX库”的关键设置。这个设置是针对每个项目的,但通常你设置一次,新建项目时也会沿用。
- 在Dev-C++中,点击顶部菜单栏的“Tools”(工具),选择“Compiler Options”(编译选项)。
- 在弹出的窗口,点击“Settings”选项卡。
- 在左侧列表中选择“Linker”(链接器)。
- 在右侧“Link libraries”或“Add the following commands when calling the linker”(不同版本翻译可能不同)的输入框里,添加
-leasyx。- 重要提示:是“添加”,不是“替换”。如果框里原来有别的链接命令(比如
-lstdc++),你要确保-leasyx加在它们后面,用空格隔开。例如:-lstdc++ -static -leasyx。 -l是链接器选项,后面跟着库名easyx。链接器会自动去lib文件夹里寻找名为libeasyx.a的文件。这就是为什么我们之前要把文件拷贝到指定位置并正确命名。
- 重要提示:是“添加”,不是“替换”。如果框里原来有别的链接命令(比如
完成这四步,配置工作就大功告成了!这个过程其实就是在建立一条清晰的路径:你的代码(需要图形功能) -> 编译器(通过头文件知道有哪些功能) -> 链接器(通过链接选项和库文件找到功能的实现代码)。理顺了这条路径,一切就通了。
5. 点亮第一个图形窗口:测试与验证
配置完环境,最激动人心的时刻来了——我们要写一段简单的代码,来验证EasyX是否真的在我们的Dev-C++里活起来了。这个过程就像新电脑开机后的第一次点亮屏幕,充满仪式感。
5.1 创建你的第一个图形项目
打开Dev-C++,点击“File” -> “New” -> “Project…”。在弹出的窗口里,选择“Console Application”(控制台应用程序),语言选择“C”或者“C++”都可以(EasyX同时支持两者),给你的项目起个名字,比如“MyFirstGraphics”。关键是,在创建项目时,Dev-C++可能会问你是否使用“多字节字符集”之类的选项,保持默认即可。项目创建好后,你会看到一个熟悉的 main.c 或 main.cpp 文件,里面已经有了一个基本的 main 函数框架。
5.2 编写测试代码
现在,把里面所有的代码替换成下面这段经典的测试代码:
#include <graphics.h> // 引入EasyX图形库头文件
#include <conio.h> // 引入控制台输入输出头文件,用于_getch()函数
int main()
{
// 初始化一个640像素宽、480像素高的图形窗口
initgraph(640, 480);
// 在窗口中心点(320,240)处,画一个半径为100的圆
circle(320, 240, 100);
// 等待用户按下任意键,这样窗口不会一闪而过
_getch();
// 关闭图形窗口
closegraph();
return 0;
}
我来简单解释一下这几行代码:
#include <graphics.h>:这就是我们配置半天的成果,告诉编译器我们要用EasyX。initgraph(640, 480);:初始化图形模式,创建一个窗口。你可以把数字改成你喜欢的尺寸。circle(320, 240, 100);:调用画圆函数。前两个参数是圆心的x和y坐标,第三个参数是半径。_getch();:让程序暂停,等待你按一个键。没有这行,窗口会瞬间打开又关闭,你看不到效果。closegraph();:关闭图形窗口,释放资源。
5.3 编译、运行与结果
点击Dev-C++工具栏上的“Compile & Run”(编译运行)按钮(或者按F11)。如果一切配置正确,你会看到编译日志快速滚动,没有出现任何“error”(错误)提示。然后,一个灰色的图形窗口会弹出来,窗口中央有一个白色的圆形!
恭喜你!这意味着你的Dev-C++和EasyX已经成功牵手。这个简单的圆,就是你图形编程之旅的起点。如果运行后窗口一闪而过,或者没有出现圆,请回头检查:
- 头文件和库文件是否拷贝到了正确的、有权限的目录下?
- 链接器设置里
-leasyx是否添加正确(注意前面有-l)? - 测试代码是否复制完整,特别是
#include和_getch()的拼写?
第一次成功是最令人兴奋的。接下来,你就可以尝试修改坐标和半径画更多的圆,或者试试 line(画线)、rectangle(画矩形)、setcolor(设置颜色)等函数,感受一下图形编程的即时乐趣。
6. 避坑指南:常见问题与解决方案
在带领很多新手配置环境的过程中,我总结了一些几乎每个人都会遇到的“坑”。别怕,这些问题都有明确的解决办法,你遇到了对照着排查,很快就能解决。
6.1 编译错误:“graphics.h: No such file or directory”
这是最常见的错误,意思是编译器找不到 graphics.h 这个头文件。
- 原因:头文件没有拷贝到正确的
include目录,或者拷贝的路径不对。 - 解决:
- 再次确认你拷贝的目标路径是
[编译器根目录]\x86_64-w64-mingw32\include\,而不是Dev-C++的安装目录。 - 检查
include文件夹里是否确实有graphics.h和easyx.h。 - 一个终极检查方法:在Dev-C++中,点击“Tools” -> “Compiler Options”,在“Directories”选项卡下,查看“C Includes”或“C++ Includes”的目录列表,看看是否包含了你刚才拷贝的
include目录路径。通常系统会自动包含,如果没有,可以手动添加进去。
- 再次确认你拷贝的目标路径是
6.2 链接错误:“undefined reference to `initgraph’…” 或 “ld returned 1 exit status”
这个错误通常出现在编译的最后阶段(链接阶段),意思是编译器认识 initgraph 这些函数(因为找到了头文件),但链接器找不到它们的实现代码。
- 原因:库文件
libeasyx.a没有正确放置,或者链接器设置-leasyx没有添加。 - 解决:
- 首先确认库文件
libeasyx.a是否在[编译器根目录]\x86_64-w64-mingw32\lib\目录下。 - 然后,重点检查链接器设置:打开“Compiler Options” -> “Settings” -> “Linker”。确保在链接器命令框中,有
-leasyx这个选项。注意,必须是-leasyx,前面是短横杠-l后面紧跟库名easyx。检查它是否被意外删除或写错(例如写成-libeasyx或leasyx)。 - 确保你使用的是64位库(
lib64/libeasyx.a)对应64位编译器。
- 首先确认库文件
6.3 程序运行后窗口一闪而过
程序编译成功了,但黑色的控制台窗口和图形窗口一闪就消失了。
- 原因:测试代码中缺少了等待用户输入的语句(如
_getch();或getch();),导致main函数执行完后程序立即结束。 - 解决:确保你的
main函数中,在closegraph();之前,有一行_getch();(C++)或getch();(C)。这个函数需要#include <conio.h>。它的作用就是暂停程序,等待你按一个键。
6.4 想用C++特性(如cout)但遇到问题
测试代码是C风格的,如果你想在图形程序里使用C++的输入输出流(如 cout),可能会遇到冲突。
- 解决:EasyX完美支持C++。你只需要做两件事:
- 将文件后缀改为
.cpp(在Dev-C++中,右键文件 -> “Rame file”)。 - 在代码开头,同时包含C++的头文件和EasyX头文件,例如:
#include <iostream> #include <graphics.h> using namespace std; int main() { initgraph(640, 480); // 现在你既可以用circle画图,也可以用cout在控制台输出调试信息 circle(320, 240, 100); cout << "Circle drawn!" << endl; _getch(); closegraph(); return 0; }
- 将文件后缀改为
把这些常见问题记在心里,配置时就能从容不迫。环境配置是编程的第一道小考验,解决了它,后面就是广阔而有趣的图形编程世界了。
7. 从画圆到创作:EasyX基础函数快速上手
环境跑通了,测试圆也画出来了,是不是觉得意犹未尽?EasyX的魅力远不止一个圆。它提供了一整套简单直观的函数,让你能快速绘制各种图形、处理鼠标键盘事件、显示文字和图片。我们来快速过几个最常用的功能,让你立刻就能开始自己的创作。
7.1 图形绘制:让你的画面丰富起来
画圆只是开始,EasyX提供了基本的几何图形绘制函数,参数都非常直观:
line(x1, y1, x2, y2);:从点(x1,y1)到点(x2,y2)画一条直线。rectangle(left, top, right, bottom);:画一个矩形,参数是左上角和右下角的坐标。fillcircle(x, y, radius);:画一个实心圆。对应的还有fillrectangle、fillpolygon等填充函数。setlinecolor(RGB(255, 0, 0));:设置接下来要画的线条颜色。RGB(红, 绿, 蓝)每个值范围0-255。比如红色就是RGB(255,0,0)。setfillcolor(GREEN);:设置填充颜色。EasyX也预定义了一些颜色常量,如RED,GREEN,BLUE,YELLOW等,可以直接使用。
你可以写个小程序,组合这些函数画个简单的房子或者小车。比如:
initgraph(800, 600);
setfillcolor(LIGHTGRAY); // 设置填充色为浅灰
fillrectangle(200, 300, 600, 500); // 画房子主体
setfillcolor(BROWN);
fillrectangle(350, 150, 450, 300); // 画烟囱
setfillcolor(RED);
fillpolygon(...); // 画屋顶(多边形,需要顶点数组)
_getch();
closegraph();
7.2 文字输出:让图形会“说话”
在图形窗口里显示文字是基本需求。EasyX使用 outtextxy 函数。
settextcolor(RED);:设置文字颜色。settextstyle(高度, 宽度, “字体名”);:设置文字样式。比如settextstyle(36, 0, “楷体”);是36像素高的楷体。outtextxy(x, y, “你好,EasyX!”);:在指定坐标(x,y)处输出文字。
你可以把文字和图形结合起来,比如在画的图形旁边做个标注。
7.3 图像处理:引入更丰富的素材
除了自己画,还能加载图片。这是做游戏或演示时必不可少的功能。
IMAGE img;:定义一个图像变量。loadimage(&img, “picture.jpg”);:从文件加载图片到img对象。支持bmp, jpg, png, gif等格式。putimage(x, y, &img);:将图片显示在窗口的(x,y)位置。
记得把图片文件放在你的项目源代码(.c或.cpp文件)同一个目录下,或者使用绝对路径。加载图片后,你就可以让一个角色在屏幕上移动了。
7.4 交互基础:响应鼠标和键盘
图形程序怎么能没有交互?EasyX提供了简单的消息循环来获取输入。
ExMessage m;:定义一个消息变量。- 在循环中,使用
peekmessage(&m, EX_MOUSE | EX_KEY);来获取鼠标或键盘消息。 - 然后判断
m.message,例如WM_MOUSEMOVE(鼠标移动)、WM_LBUTTONDOWN(左键按下)、WM_KEYDOWN(按键按下)等,并通过m.x,m.y,m.vkcode来获取具体的操作信息。
有了这些,你就能做一个用方向键控制小球移动,或者用鼠标点击画图的小程序了。从静态的图形到动态的、可交互的程序,这一步跨越会让你成就感爆棚。
7.5 动画与双缓冲:让画面流畅起来
当你开始让图形动起来时,可能会发现画面闪烁得很厉害。这是因为直接在屏幕上绘图,用户能看到中间过程。解决这个问题的标准技术叫做“双缓冲”。
- 创建两个绘图表面:一个在内存中的“画布”(
IMAGE),一个是显示在屏幕上的窗口。 - 所有的绘图操作都先在内存画布上进行。
- 绘制完成一帧后,一次性将内存画布的内容贴到屏幕上。
EasyX里可以这样简单实现双缓冲:
// 在 initgraph 之后
setbkcolor(WHITE);
cleardevice();
while (true) {
// 1. 在内存中作图(这里以清屏和画圆为例)
cleardevice();
circle(x, y, 20);
x += 1; // 让圆动起来
// 2. 延时,控制帧率
Sleep(10);
// 3. 刷新屏幕(EasyX内部有双缓冲机制,BeginBatchDraw和EndBatchDraw是它的接口)
// 对于连续动画,更简单的做法是使用 FlushBatchDraw 或 在循环外使用 BeginBatchDraw/EndBatchDraw
FlushBatchDraw();
}
理解并运用双缓冲,是编写流畅图形程序的关键一步。EasyX让这一步变得不那么困难。
掌握了这些基础函数,你就已经拥有了制作简单动画、小游戏或图形化工具的基本能力。接下来,就是发挥你的想象力,用代码去创作的时候了。记住,最好的学习方式就是动手去做,从一个会动的小方块开始,逐步增加功能,你会在解决一个个小问题的过程中飞速成长。
404



被折叠的 条评论
为什么被折叠?



