普通的画线图什么的
首先我们需要安装一个easyx的图形库,然后把头文件搞出来
#include <stdio.h>
#include <easyx.h>//easyx画线啥啥的图形库
#include <graphics.h>
#include <math.h>
#include <conio.h>//键盘操作的头文件
设置背景就是(要清屏之后才可以设置新的背景颜色)
setbkcolor(WHITE);
cleardevice();//需要清屏后才可以设置新的背景颜色
画线条
setlinecolor(RED);//线条颜色
//setlinestyle();//这个是设置线条样式的函数,但是我给忘了里面填什么了
line(50, 50, 100, 100);//起点终点坐标
画图(以画圆为列子)
setfillcolor(BLACK);//设置填充颜色
fillcircle(400, 300, 50);//填充的圆
circle(200, 200, 50);//无填充的圆
总结画图画线
set就是设置东西
比如setbkcolor
fill就是填充
载入图片,我们线需要定义一个图片,才可以载入图片,载入图片需要图片文件和我们的源代码在同一个栏目中也就是
然后我们的代码就是
IMAGE img;
loadimage(&img, "./shu.jpg", 500, 500);
putimage(0, 0, &img);
输出的结果就像这样子,我的酷鼠!!!
然后我们需要接受鼠标的消息,我们需要一个鼠标消息的变量来记录每次的鼠标的消息
然后我们需要对这个消息进行判断就OK
鼠标消息函数
// 鼠标消息
// 支持如下消息:
WM_MOUSEMOVE 鼠标移动
WM_MOUSEWHEEL 鼠标滚轮拨动
WM_LBUTTONDOWN 左键按下
WM_LBUTTONUP 左键弹起
WM_LBUTTONDBLCLK 左键双击
WM_MBUTTONDOWN 中键按下
WM_MBUTTONUP 中键弹起
WM_MBUTTONDBLCLK 中键双击
WM_RBUTTONDOWN 右键按下
WM_RBUTTONUP 右键弹起
WM_RBUTTONDBLCLK 右键双击
struct MOUSEMSG
{
UINT uMsg; 当前鼠标消息
bool mkCtrl; Ctrl 键是否按下
bool mkShift; Shift 键是否按下
bool mkLButton; 鼠标左键是否按下
bool mkMButton; 鼠标中键是否按下
bool mkRButton; 鼠标右键是否按下
short x; 当前鼠标 x 坐标
short y; 当前鼠标 y 坐标
short wheel; 鼠标滚轮滚动值 (120 的倍数)
};
bool MouseHit(); 检查是否存在鼠标消息
MOUSEMSG GetMouseMsg(); 获取一个鼠标消息。如果没有,就等待
void FlushMouseMsgBuffer(); 清空鼠标消息缓冲区
比如我们点击鼠标
ExMessage msg;//鼠标消息
if (peekmessage(&msg, EM_MOUSE))//判断是不是鼠标消息
{
switch (msg.message)
{
case WM_MOUSEMOVE://鼠标移动
fillcircle(400, 300, 50);//填充的圆
break;
case WM_LBUTTONDOWN://鼠标点击
break;
default:
break;
}
这个的意思就是点击鼠标移动就在400 300的位置打印一个实心圆,就ok
然后我们的键盘输入也是一样的操作,只不过函数不同而已
char key = _getch();
switch (key)
{
case 72:
y -= 20;
printf("上键\n");
break;
case 80:
y += 20;
printf("下键\n");
break;
case 75:
x -= 20;
printf("左键\n");
break;
case 77:
x += 20;
printf("右键\n");
break;
}
然后如果我们要控制某一个物体移动比如控制一个圆移动就把这个圆的坐标设置为一个变量,然后通过我们的鼠标或者键盘的操作来改变这个变量的值就可以让他在不同的地方出现,这一定要在一个while循环里面!!!
fillcircle(x, y, 10);
char key=_getch();
if (y <= 0 || x <= 0 || x >= 500 || y >= 500) {
if (x <= 0) {
x = 20;
}
else if (x >= 500) {
x = 20;
}
else if (y <= 0) {
y = 20;
}
else if (y >= 500) {
y = 20;
}
continue;
}
else
{
switch (key)
{
case 72:
y-=20;
printf("上键\n");
break;
case 80:
y+=20;
printf("下键\n");
break;
case 75:
x-=20;
printf("左键\n");
break;
case 77:
x+=20;
printf("右键\n");
break;
}
}
但是我们会发现他这个图片如果和这个在一起,那么我们的图片就会一直闪,这就需要我们的双缓冲函数
BeginBatchDraw();
//画图操作
FlushBatchDraw();
画图操作在双缓冲函数里面!
这些就是easyx的一些操作,对于其他的一些画图的应用还是比较简单的
还有一些操作比如音乐播放
注意头文件中 mmsystem.h 和 winmm.lib 需要写在 graphics.h 的下面
使用 mciSendString () 来打开和播放音乐,后面三个参数暂时不用管,都写 0
还是建议把音乐文件放在与源代码相同目录的地方
可对音乐文件取别名 alias +别名
加载静态库:#pragma comment(lib,“winmm.lib”) (放在头文件里面)
原文链接:https://blog.csdn.net/weixin_49486457/article/details/124544489
#include <graphics.h>
#include <MMStream.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"winmm.lib") //调用库函数
int main() {
for (int i = 100000000; ; i--) {
cin >> i;
if(i == 1)//如果输入1 就暂停
mciSendString("close Mighty.mp3", 0, 0, 0);
else//否则就播放
mciSendString("play Mighty.mp3", 0, 0, 0);
}
getchar();
closegraph();
}
okok