> 文章列表 > 图形库EasyX的学习:)

图形库EasyX的学习:)

图形库EasyX的学习:)

最近学了一点做小游戏的基本知识,来总结一下,巩固一下记忆:

在这个基础上初学者要先明白vs的下载及基本使用还有图形库的下载及安装

然后才是正题:

图形库里包含c++语法,所以要用c++文件,但是除了里面的函数外其他的语法是c语言,也就是说这个虽然是c++文件,但是c语言基础好的同学学起来也没什么问题;

在要用EasyX里面的函数时,记得包含头文件<easyx.h>

刚开始学习这个的时候肯定都是先从创建窗口开始,所以先来了解一些基本函数功能再来打代码:

initgraph函数暂定它只有两个参数(后面再学新的),一个是宽,一个是高,单位是像素,也就是在平面图里的矩形的长宽;

还有一个函数closegraph()没有参数,用于关闭窗口,当然,如果你不关的话也没什么事,但是还是要养成好习惯,根据上面的知识,可以打出这样的代码:

#include<easyx.h>
int main()
{initgraph(800, 600);closegraph();return 0;}

这个代码可以运行,但是你会发现,确实创建了一个这样的800像素宽,600像素高的窗口,但是窗口一闪而过,就没了,这是为什么呢?

后来我才了解到:程序运行后窗口创建后就立刻关闭了,但是这样的话,根本就看不清窗口,创建和没创建不就一样了;所以为了解决这个问题,又来了一个函数getchar();它的作用是暂时阻塞程序,等待用户按键后再关闭,看起来很厉害,其实这个函数就本来是用来获取用户输入的字符的,但是一个单独的这样的,在用户没有按键也就是输入字符的时候,程序就一直在等,就不会再到后面的关闭窗口了,知道用户输入字符就会继续程序的编译,就便于看见这个创建的窗口;对了还有一点要注意:getchar函数是编译器自带的函数库里的函数所以要记得引用头文件#include<stdio.h>

更改后的程序就变成这样了:

#include<easyx.h>
#include<stdio.h>
int main()
{initgraph(800, 600);getchar();closegraph();return 0;}

然后第二个了解的就是窗口的逻辑坐标和物理坐标:

在图形库里,

这张图相当于一个窗口。仔细看可以发现它是从除了标题框从黑框开始的最左上角作为原点(0,0),下面和右边分别为y,x坐标的正方向,刚开始默认物理坐标,和逻辑坐标都是这样,但是有一点不同,逻辑坐标可以改,物理坐标不可以改,可以这么理解:每个人的逻辑可能都会不一样,所以逻辑坐标可以更改,而,物理客观存在的事物不可以更改,所以物理坐标不可以改;

所以怎么改逻辑坐标呢?

为什么要改?

可以想到,有时候我们要作图的时候肯定要画在这个窗口让人看见才行,所以按照我们一般来看都是与靠中间越好,而且一般我们建立直角坐标系都是 从中间建立,以便计算其他位置的坐标,所以为了解决这个问题,有了这几个函数:

setorigin函数,有两个参数,表示设置的逻辑坐标的x坐标和y坐标;

还有一个,由于我们一般的习惯是y方向向上为正,为了符合自己的习惯,这时候我也想改过来,所以就发现了这样一个函数:setaspectratio函数,有两个参数,我现在了解的不多,从我目前了解的来看,他的两个参数可以调大小,但是具体是做什么的,暂时可以不去深究,因为目前我只是改变它的正负而已,两个参数都默认为1,都为正,分别表示x,y轴的朝向向右为正,和向下为正,这时候,把第二个参数改成-1也就让y轴变成了以向上为正;

将程序放进这两个函数之后就变成这样:

#include<easyx.h>
#include<stdio.h>
int main()
{initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);getchar();closegraph();return 0;}

这里现总结一个误区和一个易错点:

这个setorigin函数建立新的逻辑坐标是在物理坐标的基础上,物理坐标是不会变的,也就是说如果我连续用了两个这个建立逻辑坐标的原点函数,最终建立起来的逻辑坐标,和将第一个逻辑坐标删掉的一样;(可以通过画图函数画出来的图的位置来验证);

还有一个易错点:千万不要把画这些有功能的函数放在getchar后面,至于为什么可以从上面了解到的基础只是可以得出原因;

现在窗口差不多建立完了,也是时候开始画图了,一大波知识点正在来袭,保护好脑子(主要是想练熟的话就要爱惜一下手了):

line函数,四个参数,分别表示俩个确定点坐标的xy值;也就是相当于line(100,200,100,300);这个画出来的会是一条x1=100,y1=200,x2=100,y2=300;的两个点确定的直线;画一下试试(这里的坐标都是只逻辑坐标);

 上面的那条白色的小线条就是;来看看这个代码:

#include<easyx.h>
#include<stdio.h>
int main()
{initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);line(100, 200, 100, 300);getchar();closegraph();return 0;}

circle函数,画圆的函数,有三个参数,圆心的xy坐标分别占两个,(这些函数的坐标都是一逻辑坐标为基础的x,y坐标)还有一个就是以像素为单位的半径;

所以可以写一个这样的代码,结果为:

#include<easyx.h>
#include<stdio.h>
int main()
{initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);circle(100, 200, 100);getchar();closegraph();return 0;}

 学了前面的基础下面的函数就更容易理解了(也就是相面还有一堆画图函数QAQ);

但是没有下面了,今天结束了,对学习说晚安~~

---------------------------------------------------------------------------------------------------------------------------------

要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。

大数据