简介:easyx是基于C++的初级图形库,可以实现较简单的图形界面操作
推荐学习网站:bilibili C语言Plus
一、基本操作
1.1 头文件
#include
1.2 坐标和设备
坐标:默认的原点在窗口左上角,X轴向右为正,Y轴向下为正,度量单位
是像素点。
设备:绘图表面。设备分为两种,一种是默认的绘图窗口,一种是IMAGE对象。通过SetWorkingImage()函数可以设置当前用于绘图的设备,设置后所有的绘图函数都会绘制在该设备上。
1.3 窗口函数
·创建初始化绘图窗口:initgraph(int width,int height,int flag=NULL)
参数解释:width:宽度 height:高度 flag:窗口样式
·关闭窗口:closegraph();
·清空绘图窗口:cleardevice();
1.4 图像绘制函数
绘图函数从填充样式可以分为三类:无填充、有边框、无边框
以画圆为例:
·circle() :无填充
·fillcircle():有边框填充
·solidcircle():无边框填充
从形状划分可分为八种:圆(circle)、矩形(rectangle)、线(line)…
1.5 设置填充颜色
setfillcolor(颜色);
1.6 设置线条样式
样式:setlinestyle(style,int height,int width);
颜色:setlinecolor(颜色);
1.7 设置背景颜色(两行代码必不可少)
setbkcolor(颜色);
cleardevice();
1.8 文字函数
·在指定位置输出字符串:outtextxy(int x,int y,str);
(注:在字符串前加上大写L;使用TEXT()函数,在其中写str;)
·设置当前文字颜色:settextcolor(颜色); RCG(a,b,c)
·设置文字样式:settextstyle(int height,int width,”楷体”);
·文字居中(自行计算距离)
1.9 设置背景模式
透明背景:setbkmode(TRANSPARENT);
二、图像处理函数
2.1 定义变量
在使用图像之前,需要定义一个变量(对象),然后把图片加载进变量才能使用
定义方法:IMAGE img;
2.2 从文件中读取图像
loadimage(&img,plmgFile,int nWidth=0,int nHeight=0,bool bResize=false)
参数解释:
plmgFile:图片文件名:相对路径:./表示当前文件夹
nWidth:图片拉伸宽度
nHeight:图片拉伸高度
bResize:是否调整IMAGE大小以适应图片
2.3 在当前设备上绘制指定图像
putimage(int dstX,int dstY,&img)
参数解释:
dstX:绘制位置的X坐标
dstY:绘制位置的Y坐标
三、鼠标消息
3.1 定义变量
ExMessage msg;
3.2 是否有鼠标消息(左,右,中,移动)
peekmessage(&msg,EM_MOUSE) 如果有消息返回True,通常会使用循环while()
判断鼠标点击的范围:(如果要显示需要在控制台上显示)
e.g.:msg.x>=50&&msg.x<=50+150&&msg.y>=50&&msg.y<=50+50
3.3 判断消息类型(switch(msg.message))
·左键单击:WM_LBUTTONDOWN
·左键双击:WM_LBUTTONCLICK
·右键单击:WM_RBUTTONDOWN
·右键双击:WM_RBUTTONCLICK
四、键盘消息——非EasyX函数
4.1 消息函数
·getch()需要使用返回值来判断 需要用到conio.h库
E.g.:根据键盘输入上下左右移动
char key=getch(); switch(key):
↑键:case 72: /case ‘w’: /case ‘W’:
↓键:case 80: /case ‘s’: /case ‘S’:
←键:case 75: /case ’a’: /case ‘A’:
→键:case 77: /case ‘d’: /case ‘D’:
比如可以用键盘输入控制移动:采用x++,y++等(如果不想显示轨迹需要用cleardevice());
·GetAsyncKeyState()(推荐,使用时需要判断即if(GetAsyncKeyState(内容)))
↑键:VK_UP
↓键:VK_DOWN
←键:VK_LEFT
→键:VK_RIGHT
五、其他函数
5.1 防止图片闪屏
BeginBatchDraw(); 开始批量绘图
//中间放置绘图代码
EndBatchDraw(); 结束批量绘图
或者用:
BeginBatchDraw(); 开始批量绘图
//中间放置绘图代码
FlushBatchDraw();
//中间放置绘图代码
EndBatchDraw(); 结束批量绘图
5.2 窗口
·HWND hnd=GetHWnd();//获取窗口句柄
·SetWindowText(hnd,string);//修改窗口标题
·MessageBox(hnd,”提示内容”,”提示标题”,MB_OKCANCEL);//弹出提示窗口
MB_OKCANCEL:可以替换成MB_YESNOetc.
返回值为IDOK(确定)或IDCANCEL(取消),可以判断返回值进行操作
六、播放音乐
需要包含头文件:#include
加载静态库:#pragma comment(lib,”winmm.lib”)
使用方法:mciSendString(“open ./路径 alias 别名”,0,0,0); //打开音乐
mciSendString(“play 别名 [repeat]”,0,0,0);//播放,repeat:重复
mciSendString(“close 别名”,0,0,0);//关闭音乐