文章目录
下载安装
easy_x官方网站,点击【下载】可以下载不同版本的easy_x安装软件,我直接下了EasyX库(附带graphics.h) 测试版 (2019-5-29 更新)这一版本。
easy_x官方文档,全中文。不过在启动安装软件后,会自动扫描你电脑中的不同版本VC,然后选择安装到哪个版本的VC,也可以选择是否安装chm格式的文档到电脑上。
其实很多东西官方文档中都说得很详细了,这里就不啰嗦了。
EasyX基础使用知识
在Visual C++中创建空的控制台项目,然后添加.cpp文件,#include graphics.h就可以了。如果不是控制台项目,而是Win32 Application或者其他的项目,就无法使用控制台相关的函数。
注意:EasyX无法和Dev CPP一起使用,必须配合VC使用,代码文件扩展名要用.cpp。
基本概念:
- 设备(绘图表面),EasyX运行在控制台上面,调用win api进行绘图。绘图的窗口只有两种,默认绘图窗口的和IMAGE对象。通过
SetWorkingImage(IMAGE* pImg = NULL)函数设置,一般绘图设备为默认绘图窗口。选定以后,所有的绘图函数都会运作在这个绘图设备上。注意:EasyX不是Qt或者MFC,EasyX只是绘图工具。 - 坐标,分为物理坐标(描述设备的坐标系,左上方为原点,X轴向右为正,Y轴向下为正,单位为像素)和逻辑坐标(一般和物理坐标一一对应)。可通过
setorigin改变坐标原点,setaspectratio改变坐标轴方向和缩放比例。 - 颜色。既然EasyX重点在于绘图,那颜色的表示方法就非常重要了。EasyX提供了一些预定义大写的颜色常量(
BLACK, BLUE, GREEN, RED......),这些常量实际是16进制的颜色表示,0xbbggrr;还可以用windows SDK中的RGB宏来合成颜色,RGB(b, g, r)。比较少用的是用HSLtoRGB、HSVtoRGB转换其他色彩模型到RGB 颜色。
用EasyX来做控制台游戏之类的,和直接使用Console相关的C函数以及Windows的api思路差别不大,都是配合一定的程序逻辑,重复“绘制-擦除”这一的过程。但是方便多了。
EasyX程序示例
1.1 画一个实心圆
#include <graphics.h> // 引用 EasyX 图形库
#include <conio.h>
int main()
{
initgraph(640, 480); // 初始化640×480的画布
setcolor(YELLOW); // 圆的线条为黄色
setfillcolor(GREEN); // 圆内部位绿色填充
fillcircle(100, 100, 20); // 画圆,圆心(100, 100),半径 20
_getch(); // 按任意键继续
closegraph(); // 关闭图形界面
return 0;
}
1.2 画出10条直线
#include <graphics.h>
#include <conio.h>
int main()
{
initgraph(640, 480);
for(int y=0; y<=480; y=y+48)
line(0, y, 640, y);
getch();
closegraph();
return 0;
}
1.3 画出红蓝交替的直线
#include <graphics.h>
#include <conio.h>
int main()
{
initgraph(640, 200);
for(int y=0; y<=200; y=y+5)
{
if ( y/5 % 2 == 1) // ÅÐ¶ÏÆæÊýÐÐżÊýÐÐ
setcolor(RGB(255,0,0));
else
setcolor(RGB(0,0,255));
line(0, y, 640, y);
}
getch();
closegraph();
return 0;
}
1.4 绘制国际象棋棋盘
// 绘制国际象棋棋盘
#include <graphics.h>
#include <conio.h>
int main()
{
int step = 50;
// 初始化绘图窗口
initgraph(500, 500);
// 设置背景色为蓝色
setbkcolor(YELLOW);
// 用背景色清空屏幕
cleardevice();
int i,j;
for(i=1;i<=8;i++)
{
for(j=1;j<=8;j++)
{
if ((i+j)% 2 ==1)
{
setfillcolor(BLACK);
solidrectangle(i*step,j*step,(i+1)*step,(j+1)*step); // 绘制黑色方块
}
else
{
setfillcolor(WHITE);
solidrectangle(i*step,j*step,(i+1)*step,(j+1)*step); // 绘制白色方块
}
}
}
getch();
closegraph();
return 0;
}
1.5 绘制围棋棋盘
// 绘制围棋棋盘
#include <graphics.h>
#include <conio.h>
int main()
{
int step = 30;
// 初始化绘图窗口
initgraph(600, 600);
// 设置背景色为蓝色
setbkcolor(YELLOW);
// 用背景色清空屏幕
cleardevice();
setlinestyle(PS_SOLID, 2); // 画实线,宽度为2个像素
setcolor(RGB(0,0,0)); // 设置为黑色
int i;
for(i=1; i<=19; i++) // 画横线和竖线
{
line(i*step, 1*step, i*step, 19*step);
line(1*step, i*step, 19*step, i*step);
}
getch();
closegraph();
return 0;
}
1.6 反弹球动画
#include <graphics.h>
#include <conio.h>
#define High 480 // 游戏画面尺寸
#define Width 640
int main()
{
float ball_x,ball_y; // 小球的坐标
float ball_vx,ball_vy; // 小球的速度
float radius; // 小球的半径
initgraph(Width, High);
ball_x = Width/2;
ball_y = High/2;
ball_vx = 1;
ball_vy = 1;
radius = 20;
while (1)
{
// 绘制黑线、黑色填充的圆
setcolor(BLACK);
setfillcolor(BLACK);
fillcircle(ball_x, ball_y, radius);
// 更新小圆坐标
ball_x = ball_x + ball_vx;
ball_y = ball_y + ball_vy;
if ((ball_x<=radius)||(ball_x>=Width-radius))
ball_vx = -ball_vx;
if ((ball_y<=radius)||(ball_y>=High-radius))
ball_vy = -ball_vy;
// 绘制黄线、绿色填充的圆
setcolor(YELLOW);
setfillcolor(GREEN);
fillcircle(ball_x, ball_y, radius);
// 延时
Sleep(3);
}
closegraph();
return 0;
}
1.7 无闪烁的反弹球动画
#include <graphics.h>
#include <conio.h>
#define High 480 // 游戏画面尺寸
#define Width 640
int main()
{
float ball_x,ball_y; // 小球的坐标
float ball_vx,ball_vy; // 小球的速度
float radius; // 小球的半径
initgraph

本文详细介绍EasyX图形库的安装与使用,包括基础概念、绘图函数应用及多个实例演示,如绘制圆、直线、国际象棋棋盘、反弹球动画等,适合初学者快速上手。

1万+

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



