当前位置:   article > 正文

easyx库的介绍与使用

easyx

简单介绍

EasyX Graphics Library 是针对 Visual C++ 的免费绘图库,支持 VC6.0 ~ VC2022,简单易用,学习成本极低,应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中。并且能够抛弃无聊的黑窗口,使得制作一些程序变得更加有趣。

下载安装

可以选择在百度搜索easyx库官网下载,下载安装非常快,不超过2分种.在这里点击下载即可

注意事项

1.如果在使用的时候报错,可能是因为需要用多字节字符集,点击项目—>属性—>找到字符集 ,将它改为 多字节字符集
在这里插入图片描述
2. 使用easyx图形库,要使用头文件 #include<graphics.h>

1.创建一个窗口(initgraph)

initgraph函数有三个参数,第一个是窗口的宽度,第二个是窗口的高度,第三个参数有三个功能,第一个是展示控制台(SHOWCONSOLE—>show 展示,console 控制台)

include<stdio.h>
#include<graphics.h>

int main()
{

	initgraph(460, 460,SHOWCONSOLE);

	while (1)
	{
		;                   // 使程序卡住,不闪退,方便看到效果
	}

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述
第二个 NOCLOSE(没有关闭功能)

include<stdio.h>
#include<graphics.h>

int main()
{

	//initgraph(460, 460,SHOWCONSOLE);
	initgraph(460, 460, NOCLOSE);

	while (1)
	{
		;                   // 使程序卡住,不闪退,方便看到效果
	}

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述
第三个功能 NOMINIMIZE(没有关闭功能)

#include<stdio.h>
#include<graphics.h>

int main()
{

	//initgraph(460, 460,SHOWCONSOLE);
	//initgraph(460, 460, NOCLOSE);
	initgraph(460, 460, NOMINIMIZE);
	while (1)
	{
		;                   // 使程序卡住,不闪退,方便看到效果
	}

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述
注意的是,initgraph函数的第三个参数,需要的话可以写,不需要的话,也可以不用写。

2.图形绘制

画圆(circle,solidcircle)

circle(int x, int y, r) , solidcircle(int x, int y, r) -->实心圆
圆心坐标(x, y),圆的半径r

画线条(line)

line(int x1, int y1, int x2, int y2)
线条为 (x1, y1) 和 (x2, y2)两个点连接成的

画矩形(rectangle)

rectange(int x1,int y1,int x2, int y2)
(x1, y1)左上顶点 (x2, y2)右下顶点 画矩形

设置填充颜色(setfillcolor)

注意:颜色需要大写 例如 setfillcolor(GREEN)

设置线条颜色(setlinecolor)

颜色需要大写,setlinecolor(GREEN)

设置背景颜色(setbkcolor)

setbkcolor(GREEN)

清屏函数(cleardevice)

设置背景时候,需要用清屏函数(无参数),将window的黑色除去,才能够显示出setbkcolor函数所设置出的颜色。
在这里插入图片描述

设置背景模式(setbkmode)

一般在做游戏或者其他项目中,用来设置成透明的
setbkmode(TRANSPARENT) -->transparent 透明的

3.文字

文字的打印(outtextxy)

outtextxy(int x, int y, 文字)
(x,y)位置 例如 outtextxy(40,50,“你好呀”)

文字的颜色(settextcolor)

settextcolor(GREEN)

[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblog.csdnimg.cn/883a0ab0cjoZ134bc9bfa562bd1771c2be.ng)(https://imgblog.csdnimg.cn/88903a0abc134bc9bfa562bd1771c2be.png)]

文字的形式(settextstyle)

settextstyle(int x, int y, 字体)
(x, y) 位置
例如 settextstyle(40, 40, “宋体”)

4.图片的使用(重点)

第一步:放图片

先将图片复制粘贴到项目所在的文件夹

在这里插入图片描述

第二步:定义图片(IMAGE)

用IMAGE对图片进行定义,例如 IMAGE image
如果图片不止一张,用数组贮存图片,例如IMAGE image[N],N代表图片的数量

第三步:加载图片(loadimage)

IMAGE image;
loadimage(&image,“(定义图片的地址)”),.“./images/2.bmp”(放图片的位置));
注意:如果出现重载中没有一个可以转换参数的类型的报错
有三种解决方法:
第一种(最简单的方法):调成多字节字符集(具体步骤在前面的注意事项中)。
第二种,在loadimage函数中,放图片的位置的参数前面加上个,_T(放图片的位置)。
第三种方法:在放图片位置的参数前面加上个L。

第四步:图片的打印(putimage)

putimage(int x, int y, 定义图片的地址)
(x, y)表示位置
同时loadimage函数的第三个参数和第四个参数,分别表示图片的宽度和高度。

实例:
在这里插入图片描述

5.音乐的使用

首先声明一点,这个并不属于easyx库,而是属于windows,所以就需要用头文件,#include<mmsystem.h>(mm- 多媒体的,system系统多媒体系统),还需要个库文件**#pragma comment(lib, “winmm.lib”) —>windows的多媒体库文件**,同样也需要把音乐,复制粘贴到项目所在的文件夹中

#include<stdio.h>
#include<graphics.h>
#include<mmsystem.h>  // 包含多媒体设备接口文件  
#pragma comment(lib, "winmm.lib")
int main()
{

	initgraph(460, 460);
	//第一种
	mciSendString("open ./fire/小幸运.mp3", 0, 0, 0);
	mciSendString("play ./fire/小幸运.mp3", 0, 0, 0);
  // 

	//第二种方法   alias 取别名 bk
	//mciSendString("open ./fire/小幸运.mp3 alias bk", 0, 0, 0);   打开音乐
	//mciSendString("play bk ", 0, 0, 0);                           播放音乐
	// mciSendString("close ./fire/小幸运.mp3", 0, 0, 0);         关闭音乐
	//如果想程序运行一会儿 自动关闭音乐,
	//可以使用Sleep函数,然后再关闭音乐的函数,Sleep(3000)表示前面的程序执行3秒,再执行下面的程序 
	while (1)
	{
		;                   // 使程序卡住,不闪退,方便看到效果
	}

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

其中mciSendString 最后三个参数 分别是 快进 快退,这里播放,就没管,全为0。

6.消息(鼠标 键盘)

首先,我们应该知道,initgraph 创建的窗口的无法直接使用键盘和鼠标操作的,所以接下来我们来学习,怎样输出消息。

消息的定义(ExMessage)

直接使用 ,像这样Exmessage m;来定义一个消息

消息的接受(peekmessage)

peekmessage(参数1, 参数2),peekmessage的参数1为消息的地址,参数2则为接受消息的对象(键盘或者鼠标或者都有),所以peekmessage的参数2有3种,分别是EM_MOUSE(鼠标) , EM_KEY(键盘), EM_MOUSE | EM_KEY(鼠标和键盘)

#include<stdio.h>
#include<graphics.h>

int main()
{
	ExMessage m;  // 定义消息
	peekmessage(&m, EM_KEY);  //接受消息(键盘)
	peekmessage(&m, EM_MOUSE); //接受消息(鼠标)
	peekmessage(&m, EM_KEY | EM_MOUSE);// 接受消息(鼠标和键盘)

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

键盘和鼠标的使用

#include<stdio.h>
#include<graphics.h>
#include<mmsystem.h>
#pragma comment(lib, "winmm.lib")

int main()
{
	initgraph(460, 460);
	ExMessage m;  // 定义消息
	//peekmessage(&m, EM_KEY);  //接受消息(键盘)
	//peekmessage(&m, EM_MOUSE); //接受消息(鼠标)
	peekmessage(&m, EM_KEY | EM_MOUSE);// 接受消息(鼠标和键盘)

	mciSendString("open ./fire/11.mp3", 0, 0, 0);

	while (1)
	{
		if (m.message == WM_LBUTTONDOWN) // 鼠标左键      M_RBUTTONDOWN 鼠标右键
		{
			mciSendString("play ./fire/11.mp3", 0, 0, 0);
		}

		if (m.message == WM_KEYDOWN) // 按键
		{
			if (m.vkcode == 'f')     // 如果按f  就播放小幸运 
			{
				mciSendString("pause ./fire/11.mp3", 0, 0, 0);
			}
		}
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

应用:如何控制游戏里人物的移动


	ExMessage msg;
	peekmessage(&msg, EM_KEY);
	switch (msg.message)
	{
	case WM_KEYDOWN://键盘按下消息
		switch (msg.vkcode)
		{
		case VK_LEFT://按下左键
			
			break;
		case VK_RIGHT://按下右键
			
			break;
		case VK_UP://按下上键
			
			break;
		case VK_DOWN://按下下键
			
			break;
		}
		break;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

其中,例如 case VK_LEFT : 中,可以自行添加事物(人), 移动的距离,以及是否超出游戏边界的判断条件。

源码讲解领取(gitee)

gitee:easyx库使用讲解源码

所学有限暂时先介绍到这里,后续可能有补充,如有错误还请指出。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/94014
推荐阅读
  

闽ICP备14008679号