当前位置: 首页 > news >正文

easyx

普通的画线图什么的

首先我们需要安装一个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

http://www.lryc.cn/news/60205.html

相关文章:

  • 记一次科学
  • 亚马逊被人差评了怎么办?
  • 【目标检测】YOLOv5:修改自己的网络结构
  • spring boot 工程整合mongodb,遇到的坑
  • 防抖函数(最全 最干净 最好理解)
  • 王小川,才是深「爱」李彦宏的那个人?
  • 南京邮电大学通达学院2023《电子装配实习》报告
  • Linux--tty
  • 一位女程序员的自述:我是如何成为前端工程师的
  • C++命名空间详解
  • HDMI EDID概念梳理
  • Android端推送消息之极光推送
  • 2023测试工程师全新技术栈,吃透这些,起薪就15k
  • 十、CNN卷积神经网络实战
  • App 自动化测试
  • 考研英语知识点
  • IPSEC实验(IPSECVPN点到点,DSVPN,IPSECVPN旁挂)
  • 从4k到42k,软件测试工程师的涨薪史,给我看哭了
  • tomcat作业
  • 除了Java,还可以培训学习哪些IT技术?
  • Mysql优化(一)-- sql语句优化概述及数据库优化
  • 深度学习快速参考:1~5
  • 软件设计师笔记-----程序设计语言与语言处理程序基础
  • WebRTC 系列(三、点对点通话,H5、Android、iOS)
  • RabbitMQ( 发布订阅模式 ==> DirectExchange)
  • Pytorch基础 - 5. torch.cat() 和 torch.stack()
  • 基于AIGC的3D场景创作引擎概述
  • C++算法恢复训练之快速排序
  • 事务的特性
  • Python 计算三角形的面积、Python 阶乘实例