再见控制台,10分钟就能学会的C++绘图快速入门指南

MYRENZHIBO 2019-05-22

喜欢的可以收藏转发加关注

大部分同学都是从一个黑框框控制台开始学习C++,第一个程序通常是“Hello World”,随后可能会学打印三角形,打印乘法表,非常枯燥无趣。试想,如果能从图像化的界面编程开始学习,比如这样:

再见控制台,10分钟就能学会的C++绘图快速入门指南

那么被C++劝退的同学可能会少一些。

图中的打砖块界面用了30行代码完成绘制,非常简单。这得益于一款简洁的C++绘图库“EasyX”。这也是我在培训中使用的图形库,没有基础的学员也可以快速掌握。它让初学者把注意力集中在语言的学习和程序逻辑上,而不是研究怎么创建窗口、怎么接收鼠标键盘消息等。

本文我们将介绍EasyX的基本使用方法,只需要10分钟就可以画出图中的打砖块界面。再加上一些控制逻辑,就能开发出完整的打砖块游戏。

再见控制台,10分钟就能学会的C++绘图快速入门指南

1. 安装

首先到EasyX官网下载安装程序,下载地址https://www.easyx.cn/downloads/view.aspx?id=9

再见控制台,10分钟就能学会的C++绘图快速入门指南

我下载的是2018春分版。

然后选择自己使用的VS版本进行安装,主流的VS版本这里都有了。

再见控制台,10分钟就能学会的C++绘图快速入门指南

安装完之后就可以开心地玩啦~

2. 基础框架

使用EasyX写程序和我们平时写程序没有太大差别,看一下基础框架:

#include <graphics.h>
int main()
{
 initgraph(640, 480); // 初始化640 * 480大小的窗口
 // 添加绘图逻辑
​
​
 closegraph(); //关闭图形环境
 return 0;
}

比我们正常写代码多了两个函数initgraph、closegraph,一个是初始化绘图环境,一个是释放绘图环境。运行后显示一个黑色的窗口:

再见控制台,10分钟就能学会的C++绘图快速入门指南

虽然看起来和控制台一样是黑框框,但这个黑框框可以玩的花样就比较多了。

3. 绘制打砖块界面

画砖块其实就是画矩形,我们先试试画一个矩形:

int main()
{
 initgraph(640, 480); // 初始化640 * 480大小的窗口
​
 rectangle(10,10,40,40); // 画矩形
​
 closegraph(); //关闭图形环境
 return 0;
}

再见控制台,10分钟就能学会的C++绘图快速入门指南

矩形函数的四个参数分别代表左上角的坐标和右下角的坐标,两个数字决定一个点的坐标,两个点就可以确定一个矩形的位置。

值得注意的是,电脑窗口的坐标系和我们数学里的坐标系略有不同。

数学坐标系是X向右增大,Y向上增大:

再见控制台,10分钟就能学会的C++绘图快速入门指南

窗口坐标系的Y轴正好相反,越向下Y越大。X和数学坐标系一致,越向右X越大。窗口的原点在左上角:

再见控制台,10分钟就能学会的C++绘图快速入门指南

因此代码rectangle(10,10,40,40); 画的是一个左上角坐标(10,10),右下角坐标(40,40)的矩形。

画完矩形再画圆,画圆的函数是circle(40, 40, 20);就是圆的英文,很好理解。三个参数分别表示圆心的x,y坐标以及圆的半径。

再见控制台,10分钟就能学会的C++绘图快速入门指南

图中画了一个圆心坐标(40,40),半径20的圆。

OK,有了矩形和圆,就可以画出完整的打砖块界面

int main()
{
 int screenWidth = 640; // 屏幕宽
 int screenHeight = 480; // 屏幕高
 int blockWidth = 40; //砖块宽
 int blockHeight = 20; // 砖块高
 int boardwidth = 120; // 板子宽 
 int boardHeight = 20; // 板子高
 int radis = 10; // 球半径
 initgraph(screenWidth ,screenHeight );
​
 for (size_t j = 0; j < 5; j++) // 绘制5行
 {
 for (size_t i = 0; i < 16; i++) // 绘制16列
 {
 rectangle(i * blockWidth, j * blockHeight, (i + 1 ) * blockWidth, (j + 1) * blockHeight); //绘制砖块
 }
 }
​
 rectangle((screenWidth - boardwidth) / 2,screenHeight - boardHeight , (screenWidth + boardwidth) / 2,screenHeight ); // 绘制板子
 circle(screenWidth / 2,screenHeight - boardHeight - radis , radis ); // 绘制球
​
 getchar(); // 防止程序立即退出
 closegraph();
​
 return 0;
}

再见控制台,10分钟就能学会的C++绘图快速入门指南

框架搭好了,最后再填上颜色即可。

setfillcolor(BLUE); // 设置颜色
fillrectangle(10,10,40,40);

使用fillrectangle替代rectangle即可绘制出有颜色的矩形。圆也一样,用fillcircle替换circle。其中setfillcolor的参数是EasyX定义好的一些宏,包括WHITE,BLACK,RED等等,代表的颜色值就是英文的字面意思,完整的颜色表参见:https://docs.easyx.cn/#%e9%a2%9c%e8%89%b2

最后呈上完整代码:

#include <iostream>
#include <graphics.h>
​
int main()
{
 int screenWidth = 640; // 屏幕宽
 int screenHeight = 480; // 屏幕高
 int blockWidth = 40; //砖块宽
 int blockHeight = 20; // 砖块高
 int boardwidth = 120; // 板子宽 
 int boardHeight = 20; // 板子高
 int radis = 10; // 球半径
 initgraph(screenWidth, screenHeight);
​
 int color[] = { BLUE , RED, YELLOW, BROWN, GREEN };
​
 for (size_t j = 0; j < 5; j++) // 绘制5行
 {
 for (size_t i = 0; i < 16; i++) // 绘制16列
 {
 setfillcolor(color[rand() % _countof(color)]);
 fillrectangle(i * blockWidth, j * blockHeight, (i + 1) * blockWidth, (j + 1) * blockHeight); //绘制砖块
 }
 }
​
 setfillcolor(WHITE);
 fillrectangle((screenWidth - boardwidth) / 2, screenHeight - boardHeight, (screenWidth + boardwidth) / 2, screenHeight); // 绘制板子
 setfillcolor(CYAN);
 fillcircle(screenWidth / 2, screenHeight - boardHeight - radis, radis); // 绘制球
​
 getchar(); // 防止程序立即退出
 closegraph();
​
 return 0;
}

其他绘图函数还有椭圆、直线、多边形,贴图片等等,使用方法类似不再赘述。可以官网查询所有绘图函数。EasyX文档:https://docs.easyx.cn/ EasyX官网:https://www.easyx.cn/

最后发挥你的想象力,利用EasyX能做出什么有趣的程序?

学习C/C++的伙伴可以私信回复小编“学习”领取全套免费C/C++学习资料、视频

再见控制台,10分钟就能学会的C++绘图快速入门指南

相关推荐