您的位置:

EasyX —— 轻松学习图形编程

一、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,进而进入图形编程的奥秘之中。