EasyX使用笔记

一.

#include<graphics.h> // 包含库头文件
_getch(); // 按任意键继续
#include <conio.h> // _getch()包含在这个头文件中
closegraph(); // 关闭绘图窗口

二.

屏幕由像素点组成,对应坐标
initgraph() //创建图形窗口
initgraph(640,480) //创建像素为640*480的图形窗口
initgraph(640,480,SHOWCONSOLE) // 创建窗口时,保留控制台窗口的显示
initgraph(640,480,NOCLOSE) //恶搞程序,消除掉窗口的关闭按钮
initgraph(640,480,NOMINIMIZE) //消除窗口的最小化按钮

initgraph(640,480,NOCLOSE|NOMINIMIZE) //一起消除

三.画东西(以画圆为例)

setfillcolor(GREEN) //设置填充颜色为绿色
fillcircle(320,240,10) //填充圆(填充颜色),有边框。前两个是圆心位置,后一个是半径
circle(320,200,10) //普通圆,有边框,无法填充颜色。
solidcircle(320,150,10) //实心圆,没有边框,可以设置填充颜色

四.插入图片资源

(首先要把图片资源放入项目文件夹中)
1.定义图片变量,和存储int类型一样,即IMAGE img;(注意IMAGE不能小写)
2.load加载 loadimage(&image,“图片路径”,,宽度,高度)
如果是背景图片则跟initgraph创建的图形框保持一致 (图片路径用绝对路径,相对路径需要先输.,即"./1.ipg")
如果出现以下错误
错误: 2 个重载中没有一个可以转换所有参数类型
解决方法:
(1).直接在双引号前面加上大写的L
(2).在双引号内容外加_T(),效果为,_T(""),
(3).最方便的方法,点击项目-属性-配置属性-高级-字符集,将字符集改为多字符字符集

输入必须要有输出,利用putimage(横坐标,纵坐标,&img)

3.可以跳过图片直接设置背景颜色
利用函数setbkcolor(颜色);+ cleardevice();
其中cleardevice()为清屏函数,因为原来屏幕背景为黑色,我们虽然换了背景颜色但被黑色遮盖了,需要将黑色清除,相当于初始化一下屏幕。

4.插入原图片和遮罩图时

putimage(0,0,&img2, SRCAND); //遮罩图
putimage(0,0, &img3, SRCPAINT); //原图片

(加在&img后面的SRC代码还未搞清楚,有待进一步了解)

5.在对插入图片进行键盘操作移动时图片可能会闪烁,此时需要在输出图片前输入BeginBatchDraw(); //开启双缓冲绘图,意思是它不会直接画到窗口上,而是先画到内存里,卡也是在内存中卡。在输入图片后输入EndBatchDraw(); //关闭双缓冲绘图

6.putimage(player.x, player.y,80,80, &role,0,0); //插入人物原图 若插入的所有人物在一张图片上则可以利用putimage的这种用法,最后两个0是在原图片基础上建立坐标系取得(0,0)位置,而前两个80是在原图片上截取了80*80大小的图片

五.音乐播放

1.#include<mmsystem.h> //包含多媒体设备接口头文件
mciSendString()就存在它里面
#pragma comment(lib,“winmm.lib”) //静态库(没搞太懂,有待完善)

  1. 自定义函数
    void PlayBGM()
    {
    (1)mciSendString(“open 绝对路径/相对路径”, 0, 0, 0); //打开音乐

(2)mciSendString(“play 绝对路径/相对路径”, 0, 0, 0); //播放音乐

(3)mciSendString(“close 绝对路径/相对路径”, 0, 0, 0); //关闭音乐
}

(括号后面的三个数字暂未搞懂)

2.假设有文bai件1.mp3,要du实现播放则是mciSendString(“play 1.mp3”,NULL,0,NULL),要zhi实现暂停是mciSendString(“pause 1.mp3”,NULL,0,NULL),要实现停止是daomciSendString(“close 1.mp3”,NULL,0,NULL)
mciSendString(“open 绝对路径/相对路径 alias BGM”, 0, 0, 0); 中可以利用alias取别名,这样之后,下面的play和close直接加BGM(别名)就可以,不需要再加路径。

3.注意不能使用网易云音乐下载的歌曲,原因未知

六.键盘控制

void KeyboardControl() //键盘控制
{
if (GetAsyncKeyState(VK_UP)) //GetAsynvKeyState获取键盘输入,检测是否按下上键
{
Sleep(1);
player.y–;
}
if (GetAsyncKeyState(VK_DOWN)) //GetAsynvKeyState获取键盘输入,检测是否按下上键
{
Sleep(1);
player.y++;
}
if (GetAsyncKeyState(VK_LEFT)) //GetAsynvKeyState获取键盘输入,检测是否按下上键
{
Sleep(1);
player.x–;
}
if (GetAsyncKeyState(VK_RIGHT)) //GetAsynvKeyState获取键盘输入,检测是否按下上键
{
Sleep(1);
player.x++;
}
}

输入Sleep函数是因为一开始它移动太快…很容易直接飞出窗口

七.绘制文字

1.settextstyle //这个函数用于设置当前字体样式。

// 设置当前字体为高 16 像素的“Consolas”。(VC6 / VC2008 / VC2010 / VC2012)
settextstyle(16, 0, _T(“Consolas”));
outtextxy(0, 0, _T(“测试”));

2.settextcolor //这个函数用于设置当前文字颜色。

3.outtextxy //这个函数用于在指定位置输出字符串。

八.鼠标操作

1.鼠标消息需要使用MOUSEMSG类型,比如:MOUSEMSG msg;
2.用MouseHit()判断是否有鼠标消息(左键,右键,中间,滚轮)
3.如果有鼠标消息就可以进行接受鼠标消息
msg=GetMouseMsg();
4.鼠标消息msg主要成员
(1) uMsg //当前鼠标消息
(2)x //当前鼠标x坐标
(3)y //当前鼠标y坐标

uMsg可用来判断当前鼠标消息是什么消息
uMsg消息主要有:
WM_MOUSEMOVE 鼠标移动消息。
WM_MOUSEWHEEL 鼠标滚轮拨动消息。
WM_LBUTTONDOWN 左键按下消息。
WM_LBUTTONUP 左键弹起消息。
WM_LBUTTONDBLCLK 左键双击消息。
WM_MBUTTONDOWN 中键按下消息。
WM_MBUTTONUP 中键弹起消息。
WM_MBUTTONDBLCLK 中键双击消息。
WM_RBUTTONDOWN 右键按下消息。
WM_RBUTTONUP 右键弹起消息。
WM_RBUTTONDBLCLK 右键双击消息。

猜你喜欢

转载自blog.csdn.net/weixin_50998641/article/details/112723659