easyx图形界面课程设计部分操作总结

目录

创作背景和目的

easyx相关操作

绘制窗口与程序debug

读取和绘制图像

图片渲染缓存

获取鼠标信息

弹出窗口

音乐播放

创作背景和目的

在大一下学期做完C语言课程设计推箱子后,大二上学期又做了数据结构课程设计羊了个羊,在过程中发现自己对图形界面的相关知识处于一个较为薄弱的状态,因此在此写下该篇博客记录和总结关于图形界面编程的相关操作,目的是方便日后需要时更快的查找温习(虽然以后好像不会再有该方面的课程设计了),也算是对两个课程设计画上一个圆满的句号。

注意:本博客创作目的在于方便日后个人使用,因此省略了较多细节,若想查找更加详细的内容,可前往EasyX 文档 - 基本说明


easyx相关操作

绘制窗口与程序debug

头文件:#include
使用函数:initgraph
函数介绍:HWND initgraph(int width, int height, int flag = NULL);    // 初始化图形环境
参数1:窗口宽度
参数2:窗口高度
参数3:是否打开控制台

示例:

initgraph(500, 500); //绘制一个长50宽50的窗口
initgraph(500, 500, 1); //绘制一个长50宽50的窗口并打开控制台方便debug

读取和绘制图像

头文件:#include
使用函数:loadimage, putimage

示例:

IMAGE sign; //创建一个图形变量
loadimage(&sign, "sign.png"); //为图形变量导入图形
initgraph(500, 500);//创建窗口
putimage(10, 20, &sign); //在x=10,y=20的坐标处绘制图像

当图像素材十分多时,可以利用sprintf快速读取图像
示例:

IMAGE menu[10]
char FileName[100];
for (int i = 0; i < 10; i++) {                          
    sprintf_s(FileName, sizeof FileName, "res/menu%d.png", i);
    loadimage(&menu[i], FileName);
}

图片渲染缓存

头文件:#include
函数:BeginBatchDraw, EndBatchDraw

避免图片渲染时出现闪屏情况,我们可以先将所有图片渲染到缓存中,最后再一起渲染到屏幕
示例:

while(1){
    BeginBatchDraw();

    ... //批量绘制图片

    EndBatchDraw();
}

获取鼠标信息

头文件:#include
使用函数:peekmessage
函数介绍:bool peekmessage(ExMessage * msg, BYTE filter = -1, bool removemsg = true);
参数1:msg: 指向消息结构体 ExMessage 的指针,用来保存获取到的消息。
参数2:filter: 指定要获取的消息范围,默认 -1 获取所有类别的消息。可以用以下表格中的值或值的组合获取指定类别的消息:
参数3:removemsg: 在 peekmessage 处理完消息后,是否将其从消息队列中移除。

参数2标识 描述
EX_MOUSE 鼠标消息
EX_KEY 按键消息
EX_CHAR 字符消息
EX_WINDOW

窗口消息

示例:

ExMessage msg; //创建一个消息变量

if (peekmessage(&msg)){ //判断是否获取任何消息
 ...
}


if (peekmessage(&msg,EM_MOUSE)) { //判断是否接收到鼠标信息

    int x = msg.x; //获取鼠标横坐标
    int y = msg.y; //获取鼠标纵坐标

}

if (peekmessage(&msg) && msg.message == WM_LBUTTONDOWN){ //判断是否获取鼠标左键点击消息
 ...
}

消息标识 消息常量 详细描述
EX_MOUSE WM_MOUSEMOVE 鼠标移动消息
WM_MOUSEWHEEL 鼠标滚轮拨动消息
WM_LBUTTONDOWN 左键按下消息
WM_LBUTTONUP 左键弹起消息
WM_LBUTTONDBLCLK 左键双击消息
WM_MBUTTONDOWN 中键按下消息
WM_MBUTTONUP 中键弹起消息
WM_MBUTTONDBLCLK 中键双击消息
WM_RBUTTONDOWN 右键按下消息
WM_RBUTTONUP 右键弹起消息
WM_RBUTTONDBLCLK 右键双击消息
EX_KEY WM_KEYDOWN 按键按下消息
WM_KEYUP 按键弹起消息
EX_CHAR WM_CHAR 字符消息
EX_WINDOW WM_ACTIVATE 窗口激活状态改变消息
WM_MOVE 窗口移动消息
WM_SIZE 窗口大小改变消息

弹出窗口

头文件:#include
使用函数:MessageBox
函数介绍:int MessageBox( HWND hWnd,LPCTSTR lpText, LPCTSTR lpCaption = NULL, UINT nType = MB_OK );
参数1:hWnd:该消息框的父窗口句柄(如果此参数为NULL,则说明该消息框无父窗口)
参数2:lpText:消息框内容
参数3:lpCaption:消息框标题内容
参数4:uType:按钮类型 和 图形标志
注意:参数4设置多项时不同的代号用 '| '连接,如:MB_OK | MB_ICONQUESTION

参数4按钮常量:

参数4按钮常量 所包含的按钮
MB_OK 确认
MB_OKCANCEL 确认、取消
MB_YESNO 是、否
MB_YESNOCANCEL 是、否、取消
MB_RETRYCANCEL 重试、取消
MB_ABORTRETRYIGNORE 中止、重试、跳过

参数4图标常量:

参数4图标类型 详细描述 图标常量
x 红色圆里白色x MB_ICONERROR
MB_ICONHAND
MB_ICONSTOP
i 蓝色圆里白色i MB_ICONINFORMATION
MB_ICONASTERISK
? 蓝色圆里白色? MB_ICONQUESTION
! 黄色三角形里白色! MB_ICONWARNING
MB_ICONEXCLAMATION

函数返回值:

返回值 含义
IDOK 选择了“确认”
IDCANCEL 选择了“取消”
IDABORT 选择了“中止”
IDRETRY 选择了“重试”
IDIGNORE 选择了“忽略”
IDYES 选择了“是”
IDNO 选择了“否”

示例:

HWND hd;
hd = GetHWnd();//获取窗口句柄
if(MessageBox(hd, "恭喜过关!", "提示", MB_OK | MB_ICONQUESTION) == IDOK){//判断用户是否点击确认按钮 
 ...
}

音乐播放

头文件:#include
链接库:#pragma comment ( lib, "winmm.lib" )
使用函数:mciSendString

常用操作:
打开音乐文件:mciSendString("open music.mp3 alias A", 0, 0, 0); //将音乐取名为A

循环播放音乐:mciSendString("Play A repeat", 0, 0, 0);

暂停播放音乐:mciSendString("Pause A", 0, 0, 0);

继续播放音乐:mciSendString("Resume A", 0, 0, 0);

关闭音乐文件:mciSendString("Close A", 0, 0, 0);

你可能感兴趣的:(笔记,c语言,图形渲染,贴图)