1,窗口函数
·initgraph(int width,int height,int flag =NULL);//创建窗口
//width 指定窗口宽度
//height 指定窗口高度
//flag 窗口样式,默认为NULL
//注意:若想要同时看到控制台和图形窗口,可将flag设置为SHOWCONSOLE,若想要多种功能,可用'|'连接
·closegraph();//关闭窗口
·cleardevice();//清空绘图设备
2,坐标与设备
1,坐标默认原点在窗口的左上角,x轴向右为正,y轴向下为正,度量单位是像素点
2,设备:【1,默认的绘图窗口2,可通过SetWorkingImage()函数设置当前用于绘图的设备】
3,图形绘制函数
1,绘图函数从填充样式分类:无填充、有边框填充、无边框。
//如画圆:circle()无填充、fillcircle()有边框填充、solidcircle()无边框填充
2,给图形加颜色
·setfillcolor(颜色英文大写)//设置填充颜色,只有当画的图形为填充时,设置颜色才有效果
·setlinecolor(颜色英文大写)//设置线条颜色
3,设置样式
·setlinestyle(线条样式,线条粗细);
4,图形形状划分
circle画圆 | ellipse画椭圆 | pie画扇形 | 画多边形polygon |
---|---|---|---|
rectangke画矩形 | roundrect画圆角矩形 | line画线 | putpixel画点 |
5,设置颜色
·光的三原色:红、绿、蓝;
·RGB:合成颜色的宏,实际上合成出来的颜色是一个十六进制的整数;
·RGB(红色部分,绿色部分,蓝色部分);
·每个颜色部分的值范围在[0~255];
6,文字绘制函数(用于在图形窗口上绘制文字)【注意:图形绘制按顺序,避免覆盖文字】
1,基本函数
·outtextxy(int x,int y,LPCTSTE str);//在指定位置输出字符串【注意:出现错误,需使用多字节字符集
·settextcolor(颜色英文大写);//设置当前文字颜色
·setbkmode(TRANSPARENT);//设置文字背景模式为透明
·settextstyle(int nHeight,int nWidth,LPCTSTR lpszFace)//设置字体样式
//nHeight 指定高度
//nWidth 字符的平均宽度,如果为0,则比例自适应
//lpszFace 字体名称
2,用于文本的垂直和水平居中显示
·textheight(LPCTSTR str);//获取字符串实际占用的像素高度
·textwidth(LPCTSTR str);//获取字符串实际占用的像素宽度
7,图形处理函数(用于在窗口上显示图片)
1,首先定义一个变量(对象),然后将图片加载进变量才可使用。
//使用easyx提供的类型定义:IMAGE;如:IMAGE img;【注意:不能直接赋值】
2,加载图片(从文件中读取图像)【注意:加载函数放在循环画之外,防止重复加载卡顿】
loadimage(IMAGE* pDstImg,LPCTSTR pImgFile,int nWidth=0,int nHeight=0,bool bReasize=false)
//pDstImg 保存图像的IMAGE对象指针
//pImgFile 图片文件名
//nWidth=0 图片的拉伸宽度
//nHeight=0 图片的拉伸高度
//bResize=false 是否调整IMAGE的大小以适应图片
3,显示图片(在当前设备上绘制图像 )
putimage(int dstX,int dstY,IMAGE* pSrcImg,DWORD dwRop=SRCCOPY);
//dstX 绘制位置的x坐标
//dstY 绘制位置的y坐标
//pSrcImg 要绘制的IMAGE对象指针
//dwRop=SRCCOPY 三元光栅操作码
4,绘制透明贴图【注意:先绘制掩码图,再绘制原图】【原图黑色背景,掩码图白色背景】
例子:
IMAGE img[2];
loadimage(&img[0],图片0路径);
loadimage(&img[1],图片1路径);
putimage(x,y,&img[0],SRCAND);//SPCAND和SRCPAINT为颜色的二进制操作
putimage(x,y,&img[1],SRCPAINT);
1,找到素材,打开ps;
2,明确注意事项:【原图要黑色背景(物体要原色),掩码图白色背景(物体为黑色)】
3,选中左边的第四个图标,右键,选择魔棒工具
4,有几个基本功能:
1,背景图:魔棒点背景,右键选反向,然后Ctrl+c复制到一个新建的文档,文档要选择黑色背景;//背景图制作完成
2,掩码图:(1)在菜单栏-图像-模式-选择灰度【可使图像全部变灰】
(2)在菜单栏-图像-调试-阈值-改为1;
(3)在菜单栏-图像-调试-反向//掩码图制作完成
8,(EasyX内的函数)鼠标消息函数(获取鼠标信息)
1,使用easyx提供的类型:MOUSEMSG;//如:MOUSEMSG msg;
2,再用MoustHit(),判断是否有鼠标消息(左键、右键、中间、移动)
3,如果有鼠标消息,就可以进行接收鼠标消息;//如:msg=GetMouseMsg();
4,鼠标消息主要成员:
//uMsg 当前鼠标消息
//x 当前鼠标x坐标
//y 当前鼠标y坐标
【uMsg可用来判断当前鼠标消息是什么消息】
//主要的两个消息:
//WM_LBUTTONDOWM 鼠标左键消息
//WM_RBUTTONDOWN 鼠标右键消息
例子:
initgraph(640,480);
while(1)
{
if(MouseHit())
{
MOUSEMSG msg=GetMouseMsg();
switch(msg.uMsg)
{
case WM_LBUTTONDOWM://左键按下
break;
case WM_RBUTTONDOWN://右键按下
break;
}
}
}
9,防止闪屏
1,在循环画之前加上:BeginBatchDraw();//开始批量绘图
2,在循环中,画图之下加上:FlushBatchDraw();
3,在循环下面,加上:EndBatchDraw();//结束批量绘图
4,如有需要可以延迟程序:Sleep();//让程序睡眠多少毫秒
10,非EasyX函数–键盘消息函数(获取键盘按键消息)
1,获取鼠标消息函数【用来控制x,y坐标】
//getch(); 需要头文件 conio.h
·getch();需要使用返回值来判断//使用_kbhit()判断有无键盘消息
·非ASCII表字符:上(72),下(80),左(75),右(77)
//GetAsyncKeyState(键值); 需要头文件 windows.h
·GetAsyncKeyState(键值);需要传入一个键值
·如果按下这些返回真:上(VK_UP),下(VK_DOWN),左(VK_LEFT),右(VK_RIGHT)
//【注意:也可使用大写字母表示】
//【注意:(graphics.h包含了windows.h,也包含了放音乐的头文件:mmsystem.h)】
11,EasyX其他函数
·GetHWnd();//获取窗口句柄,获取之后可以用来操作窗口【弹窗】
//HWND hwnd=GetHWnd();//获得窗口句柄
//SetWindowText(hwnd,标题名称);//修改窗口标题
//MessageBox(hwnd,对话框内容,标题名称,MB_OKCANCEL);
12,windowsAPI播放音乐
1,首先包含头文件windows.h【注意:(graphics.h包含了windows.h,也包含了放音乐的头文件:mmsystem.h)】
2,加载静态库 winmm.lib //#pragma comment(lib,"winmm.lib")
3,使用mciSendString函数播放音乐
例子:
//mciSendString("open hh.mp3 alias BBB",NULL,0,NULL); 打开音乐//alias为路径取别名
//mciSendString("play BBB repeat",NULL,0,NULL);播放音乐//加上repeat可以重复播放
//mciSendString("close BBB",NULL,0,NULL);关闭音乐