一、EasyX简介
EasyX是一个基于C/C++的图形库,其一大特点就是非常好入门。它的官方网站提供了详细而丰富的教程。除此之外,EasyX还支持 Windows 环境下的一些常用窗口程序。EasyX 的作者是中国著名的编程大牛——陈仓九段。
EasyX 中的许多函数名字都很直观,使得初学者能够快速掌握。同时,还有很多实用的图形函数,可以用来绘制各种图形(矩形、圆形、线段等)和特效(阴影、透明度等)。
接下来我们将会从以下几个方面来更加深入了解 EasyX:图形窗口的创建、基本图形绘制、动画制作、按键响应以及鼠标响应。
二、图形窗口的创建
在使用 EasyX 绘图之前,首先需要创建一个窗口。下面是一个窗口的创建示例:
#include<graphics.h> //EasyX头文件 int main(){ initgraph(640, 480); //创建一个640 * 480的窗口 getch(); //等待关闭窗口 closegraph(); //关闭图形窗口 return 0; }
以上代码中使用了 EasyX 提供的窗口创建函数 initgraph(),其中参数含义依次是窗口宽度、窗口高度。EasyX 也支持窗口标题等一些设置,具体使用方式请查看 EasyX 的官方文档。最后,要记得关闭绘图窗口。
三、基本图形绘制
在 EasyX 中,有许多用来绘制基本图形的函数,其中常用的有绘制线段 line()、绘制矩形 rectangle()、绘制圆形 circle()。下面是一个绘制矩形的代码示例:
#include<graphics.h> int main(){ initgraph(640, 480); rectangle(100, 100, 300, 300); //绘制一个矩形,左上角坐标(100, 100),右下角坐标(300, 300) getch(); closegraph(); return 0; }
需要注意的是,矩形的左上角和右下角的坐标需要自己计算。同样,其他基本图形的绘制函数也需要传入特定的参数。除了绘制基本图形外,EasyX 还提供了丰富的渐变色可供选择。
四、动画制作
EasyX 还可以用来制作简单的动画。如下面的示例代码,可以模拟一个小球在窗口中弹来弹去的效果:
#include<graphics.h> int main(){ initgraph(640, 480); int x = 100; //小球初始x坐标 int y = 100; //小球初始y坐标 int dx = 5; //小球每次的x坐标变化量 int dy = 5; //小球每次的y坐标变化量 while(1){ setfillcolor(YELLOW); //设置小球为黄色 solidcircle(x, y, 20); //绘制小球 x += dx; //让小球x坐标增加 y += dy; //让小球y坐标增加 if (x < 20 || x > 620) dx = -dx; //当小球碰到窗口左右边缘时,改变x坐标变化量的符号 if (y < 20 || y > 460) dy = -dy; //当小球碰到窗口上下边缘时,改变y坐标变化量的符号 Sleep(10); //使小球移动不至于太快 cleardevice(); //清空画布,以便绘制下一帧 } getch(); closegraph(); return 0; }
以上代码通过不断更改小球的坐标值,再加上 Sleep() 函数的等待,模拟出了小球弹来弹去的动效。小球碰到窗口边缘时,通过改变坐标变化量的符号回弹。
五、键盘和鼠标响应
EasyX 的另一个特点是支持键盘和鼠标的控制。下面的代码示例是利用键盘控制小球的移动方向,通过按 w、a、s、d 分别对应小球上下左右的移动:
#include<graphics.h> int main(){ initgraph(640, 480); int x = 100; int y = 100; while(1){ if(kbhit()){ //检测键盘是否按下,kbhit()函数返回值为1时表示有键盘输入 int key = getch(); //获取键盘输入 if (key == 'w') y -= 10; if (key == 's') y += 10; if (key == 'a') x -= 10; if (key == 'd') x += 10; } setfillcolor(YELLOW); solidcircle(x, y, 20); cleardevice(); } getch(); closegraph(): return 0; }
以上代码在主循环中通过 kbhit() 函数检测键盘是否有输入,如果有,则通过 getch() 获取到按下的键对应的 ASCII 码(按下 ASCII 码对应的字符时可以看到小球移动)。判断按下的键来移动小球的位置,同时每次移动前都需要清空画布。
结束语
EasyX 非常适合初学者学习图形编程,其语法简单易懂、代码容易编写。初学者通过自己的编写调试,可以更好的掌握 EasyX,进而进入图形编程的奥秘之中。