目录
内容大纲为B站up主“c语言Plus”的视频内容所记录的笔记,感兴趣的小伙伴可前去了解更多小游戏的开发教程。
内容大纲为B站up主“c语言Plus”的视频内容所记录的笔记,感兴趣的小伙伴可前去了解更多小游戏的开发教程。
目录
导读
EasyX 是针对 C/C++ 的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。
比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。
原理
基于Winwods图形编程,将Windows下的复杂程序过程进行封装,将Windows下的编程过程隐藏,给用户提供一个简单熟悉的接口。用户对应图形库中函数的调用,最终都会由Windows的底层API实现。
安装
EasyX图形库指出Vs各种版本,下载解压后,直接执行安装程序即可。而其本质就是查找Vs的安装目录,并将相关文件分别拷贝至lib目录和include目录。
安装成功后,包含头文件graphics.h即可快乐了【doge】。
一、用于窗口的基础操作
1.EasyX坐标的原点在窗口的左上角,X轴正方向向右,Y轴正方向向下,单位是一个像素点。
2.initgraph(int width, int height, int flag =NULL);用于初始化绘图窗口(即创建)
窗口初始化参数:
SHOWCONSOLE:创建图形窗口时,保留控制台的显示
NOCLOSE:没有关闭功能
NOMINIMIZE:没有最小化功能
3.closegraph();关闭绘图窗口
4.cleardevice();清空绘图设备
二 、图形绘制函数用于在窗口绘制各种图形
1.绘图函数从填充样式分类可分为无填充,有边框填充,无边框三种。
以画圆为例
circle() 无填充
fillcircle() 有边框填充
solidcircle()无边框填充,参数分别为圆心的横坐标、纵坐标、半径大小。
2.从形状来分,常用的可以分为八种
circle 画圆 ellipse 画椭圆 pie 画扇形 polygon 画多边形
rectangle 画矩形 roundrect 画圆角矩形 line 画线 putpixel 画点
3.设置填充颜色setfillcolor(颜色);括号内输入颜色的英文名称
设置线条颜色setlinecolor(BLUE);
设置线条样式setlinestyle(高度,宽度,字体);
设置背景颜色setbkcolor();
三、文字绘制函数用于在窗口上绘制文字
1.outtextxy(int x,int y, LPCSTR str);在指定位置输出字符串
2.settextcolor(COLORREF color);设置当前文字颜色
3.settextstyle(int nHeight,int nWidth,LPTSTR lpszFace)设置字体样式
nHeight 指定高度
nWidth 字符的平均宽度。如果为0,则比例自适应 lpszFace 字体名称
4.textheight(LPCTSTR str);获取字符串实际占用的像素高度
5.textwidth(LPCTSTR str);获取字符串实际占用的像素宽度
四 、图像处理函数用于在窗口上显示图片
1.在使用图像之前,需要定义一个变量(对象),然后把图片加载进变量才能进行使用。
平时定义变量都是使用的基础数据类型,比如:int temp;
在使用图像的时候需要使用easyx提供给我们的类型:IMAGE,如:IMAGE img;
2.loadimage(IMAGE* pDstlmg,LPCTSTR plmgFile,int nWidth=0,int nHeight=0,bool bResize=false);从文件中读取图像
pDstlmg. 11保 存图像的IMAGE对象指针 plmgFile, //图片文件名
nWidth=0 //图片的拉伸宽度
nHeight=0, //图片的拉伸高度
bResize=false //是否调整IMAGE的大小以适应图片
3.putimage(int dstXint dstYIMAGE*pSrclmgDWORDdwRop=SRCCOPY);在当前设备上绘制指定图像。
dstX, //绘制位置的x坐标
dstY //绘制位置的y坐标
pSrclmg, //要绘制的IMAGE对象指针
dwRop=SRCCOPY,//三元光栅操作码
五、键盘消息函数用于获取键盘按键消息
1.用于获取鼠标消息的函数有两个
_getch(); 需要头文件conio.h
GetAsyncKeyState(键值); 需要头文件windowsh但是由于EasyX包含了 windows头文件,所以无须自己包含(其他需要windows头文件的函数也一样,但是需要在 graphics.h的下方包含:比如放音乐的头文件mmsystem.h)
getch();需要使用返回值来判断
■与非ASCII表字符的按键比较,需要使用虚拟键值
如果是与字母比较直接写字母,比如'A 上:72 下:80 左:75 右:77
GetAsyncKeyState(键值);需要传入一个键值,如果按下返回真了
上:VK UP 下:VK DOWN 左:VK LEFT 右:VKRIGHT
六、播放音乐
1.为了实现用C语言播放音乐,我们需要用到windows的一个API
首先需要包含头文件windows。h和mmsystem。h(如果已经包含graphics.h则无
需包含)
然后还需要加载静态库winmm.lib
最后就可以使用mciSendString函数来播放音乐了
MCIERRORmciSendStringA(
LPCSTRIpstrCommand,//命令字符串:”命令设备[参数]”
LPSTRIpstrReturnString,//接收返回信息的缓冲区,为NULL时不返回信息
UINT uReturnLength, //上述缓冲区的大小
HWNDhwndCallback,//一般为NULL
);
2.使用方法:
mciSendString("open ./ThatGirl.mp3 alias BGM",NULL,0,NULL);//打开音乐 mciSendString("playBGM",NULL,0, NULL);//播放音乐
七、其他函数
1.在设备上不断进行绘图操作时,会产生闪屏现象,此时眼睛就受不了了,针对这个想象,我们需要使用两个函数去处理。
BeginBatchDraw(); 开始批量绘图
---中间放置绘图代码---
EndBatchDraw(); 结束批量绘制
2.GetHWnd(); 获取窗口句柄,获取之后可以用来操作窗口
HWND hWnd=GetHWnd();//获得窗口句柄
修改窗口标题: SetWindowText(hWnd , "love");
设置模态对话框: MessageBox(hWnd,"我是消息框","我是标题" ,MB OKCANCEL);