关于EasyX和graphics.h的那些事(上)
做为一个100分的C++程序菜鸟,如何入手C++是一个难题。因此,我们会选择从控制台做小游戏开始上手,但是我实在是受够了控制台的画风!!
比如说是这个样子的:
伴随着一阵阵令人作呕的闪屏,和奇丑无比的画风,这就是控制台吗?!
然而… …你真的认为控制台的全貌的话
少年你错了!
其实,控制台可以是这样的:
PS:这是我自己做的扫雷,可能有点丑,但是EasyX本身是很棒的!
是不是好多了呢?
你要问我是怎么做到的呢?今天的主角上场了!
他就是:
EasyX!
EasyX以本身方便的安装和使用而著称(这很符合它的名字),它是针对 C/C++ 的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。
是不是很有用呢?
安装EasyX
要想使用EasyX就必须先安装它吧?(废话)
先确认一下自己的IDE是不是Viusal Studio,如果不是,安装方法则请自行百度。
PS:如果会安装或已经安装的网友可以跳过此节。
首先找到EasyX的官网:https://easyx.cn/
如果网站正确的话应该是这个样子的:
然后点击下载,就是图片中标红的部分(什么!?你说你没有看见,那还是洗洗睡吧),接着耐心等待安装完成。接着打开下载好的安装程序,如下图:
我们点击下一步:
然后选择自己所对应的版本,最上面的EasyX文档不必安装(当然你也可以选择安装,不过这只是一个帮助文件)。
最后,当弹出的提示框提示安装成功就可以啦!
第一个程序
既然EasyX已经安装好了,那我们就来编写第一个程序吧!
新建一个空项目,名字随意,添加main.cpp。
//main.cpp
#include <graphics.h> // 需要引用这个图形库
#include <conio.h>
int main()
{
circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100
getch(); // 按任意键继续
return 0;
}
如果操作正确的话,结果应该是这样的:
唉?你说运行不起来,对了,忘记加一条语句了,应该是这样的:
//main.cpp
#include <graphics.h> // 需要引用这个图形库
#include <conio.h>
int main()
{
initgraph(640, 480);//这两个参数随意,但最好不要小于想要显示的图像大小,否则就不能完全显示图像
circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100
getch(); // 按任意键继续
return 0;
}
这下好了,可以运行了!那么,initgraph()到底是干什么的呢?
initgraph()函数
initgraph函数是用于初始化图形系统的一个函数,initgraph函数就是使计算机屏幕从文本模式转化为图像模式。因此想要使用EasyX输出图像,就必须要调用initgraph函数。
来看看百度是怎么说的:
函数名: initgraph()
功 能: 初始化图形系统
函数原型: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);graphdriver是上涨指向图形驱动序号变量的指针;graphmode是在graphdriver选定后,指向图形显示模式序号变量的指针。pathtodriver表示存放图形驱动文件的路径。
头文件:graphics.h
图形模式的初始化
不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器, 在不同
模式下也有不同分辨率。因此, 在屏幕作图之前, 必须根据显示器适配器种类将
显示器设置成为某种图形模式, 在未设置图形模式之前,微机系统默认屏幕为文
本模式(80列, 25行字符模式), 此时所有图形函数均不能工作。设置屏幕为图形
模式, 可用下列图形初始化函数:
void far initgraph(int far *gdriver, int far *gmode, char *path);
其中gdriver和gmode分别表示图形驱动器和模式, path是指图形驱动程序所
在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见表2。
图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。根据不同的图形
适配器有不同的图形驱动程序。例如对于EGA、 VGA 图形适配器就调用驱动程序
EGAVGA.BGI。
这下明白了。
其他的函数
当然,EasyX不仅仅能画圆,它还可以画其他的一些图像(要是只能画圆,那还有什么用!)
函数名称 | 函数原型 | 用途 |
---|---|---|
putpixel() | void putpixel(int x, int y, COLORREF color); | 画像素点 |
getpixel() | COLORREF getpixel(int x, int y); | 获取像素点的颜色 |
line() | void line(int x1, int y1, int x2, int y2); | 画线 |
lineto() | void lineto(int x, int y); | 画线(至绝对坐标) |
linerel() | void linerel(int dx, int dy); | 画线(至相对坐标) |
rectangle() | void rectangle(int left, int top, int right, int bottom); | 画矩形 |
fillrectangle() | void fillrectangle(int left, int top, int right, int bottom); | 画填充矩形(有边框) |
solidrectangle() | void solidrectangle(int left, int top, int right, int bottom); | 画填充矩形(无边框) |
bar() | void bar(int left, int top, int right, int bottom); | 画无边框填充矩形 |
bar3d() | void bar3d(int left, int top, int right, int bottom, int depth, bool topflag); | 画有边框三维填充矩形 |
drawpoly() | void drawpoly(int numpoints, const int *polypoints); | 画多边形 |
fillpoly() | void fillpoly(int numpoints, const int *polypoints); | 画填充的多边形 |
circle() | void circle(int x, int y, int radius); | 画圆 |
fillcircle() | void fillcircle(int x, int y, int radius); | 画填充圆(有边框) |
solidcircle() | void solidcircle(int x, int y, int radius); | 画填充圆(无边框) |
arc() | void arc(int left, int top, int right, int bottom, double stangle, double endangle); | 画圆弧 |
其实这只是其中的一部分函数,还有很多函数需要大家自己去发掘!
今天讲的太多了,剩下的放到下一节吧,现在,你可以向你的菜鸟朋友炫耀一下了
下集预告:在EasyX中显示图片以及动图