easyx

news2024/12/23 3:42:19

普通的画线图什么的

首先我们需要安装一个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.coloradmin.cn/o/417488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年mathorcupD题航空安全风险分析和飞行技术评估思路分析

2023年mathorcupD题航空安全风险分析和飞行技术评估思路分析 飞行安全是民航运输业赖以生存和发展的基础。随着我国民航业的快 速发展&#xff0c;针对飞行安全问题的研究显得越来越重要。2022 年 3 月 21 日&#xff0c;“3.21” 空难的发生终结了中国民航安全飞行 1 亿零 59…

Android中级——性能优化

性能优化布局优化UI渲染机制避免Overdraw优化布局层级利用<include\>重用Layout使用<ViewStub\>实现View的延迟加载Hierarchy View内存优化获取内存信息ProfilerTraceViewMAT&#xff08;Memory Analyzer Tool&#xff09;dumpsys布局优化 UI渲染机制 画面流畅需…

透过Gartner最新报告,认识“超级边缘”

当下&#xff0c;酝酿能量的超级边缘。最近&#xff0c;我们在谈视频化狂飙、谈AIGC颠覆、谈算力动能不足&#xff0c;很少谈及边缘。但“边缘”恰恰与这一切相关&#xff0c;且越发密不可分&#xff0c;它是未来技术发展的极大影响因子。 “到2025年&#xff0c;超过70%的组织…

Segment Anything Model

论文翻译&#xff1a; 图1&#xff1a;我们旨在通过引入三个相互关联的组件来构建分割的基础模型&#xff1a;即时分割任务、支持数据注释并通过即时工程将零样本传输到一系列任务的分割模型&#xff08;SAM&#xff09;&#xff0c;以及用于收集SA-1B的数据引擎&#xff0c;SA…

MappingGenerator PRO 2023.3 Visual Studio 2019-2022

您的私人编码助手 MappingGenerator 最初是作为 AutoMapper 的设计时替代品创建的。现在它正在演变为编码助手&#xff0c;您可以将最平凡的编码任务委派给它&#xff1a; 生成映射生成显式转换实施克隆生成投影表达式脚手架方法调用脚手架对象创建清理方法调用方便ILogger的使…

探讨Hive是否转为MapReduce程序

目录 前提条件 数据准备 探讨HQL是否转为MapReduce程序执行 1.设置hive.fetch.task.conversionnone 2.设置hive.fetch.task.conversionminimal 3.设置hive.fetch.task.conversionmore 前提条件 Linux环境下安装好Hive&#xff0c;这里测试使用版本为&#xff1a;Hive2.3.…

【结构型模式】适配者模式

文章目录优秀借鉴1、简介2、结构3、实现方式3.1、案例引入3.2、类适配器3.3、对象适配器3.4、接口适配器4、区别对比5、适配者模式优缺点6、应用场景优秀借鉴 黑马程序员Java设计模式详解-适配器模式概述适配器设计模式&#xff08;封装器模式&#xff09;一文彻底弄懂适配器模…

页眉怎么添加【节】,设置不同章节不同页眉

文章目录前言添加【节】&#xff0c;设置不同内容总结前言 大家写文档或者论文的时候可能会需要&#xff1a;不同章节页眉展示不同的内容 然而&#xff0c;在双击页眉进行编辑的时候却发现几个章节的页眉一起被修改了&#xff1a; 会出现文章与页眉不同步的情况&#xff0c…

idea使用Junit

文章目录 idea使用JunitJunit配置常用注解常用于测试的断言方法后续idea使用Junit 对项目使用Junit主要有两个步骤: 添加Junit依赖,即添加Junit jar包使用JunitJunit配置 方法一:idea自带的快捷方法 对要测试的类的方法,在该类中,右键鼠标呼出菜单,选择Generate,快捷…

简单的回顾Linux

linux命令ls会显示出文件的颜色, 系统约定的默认颜色含义如下: 白色&#xff1a;表示普通文件 蓝色&#xff1a;表示目录 绿色&#xff1a;表示可执行文件 红色&#xff1a;表示压缩文件 浅蓝色&#xff1a;链接文件 主要是使用ln命令建立的文件 红色闪烁&#xff1a;表示链接的…

Java实现打印杨辉三角形,向左、右偏的平行四边形这三个图形代码程序

目录 前言 一、打印杨辉三角形 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 二、向左偏的平行四边形 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 三、向右偏的平行四边形 1.1运行流程&#xff08;思想&#xff09; 1.2代…

inplace-operation-error 【已解决】

最近在搞CT医学图像分割模型的领域泛化优化&#xff0c;结果就出现了报错&#xff1a; 关于这个问题stackoverflow上有非常多的讨论&#xff0c;可以过去围观&#xff1a; 指路&#xff1a;中文版stackoverflow - 堆栈内存溢出 (stackoom.com) Stack Overflow - Where Develo…

UNET-RKNN分割眼底血管

前言 最近找到一个比较好玩的Unet分割项目&#xff0c;Unet的出现就是为了在医学上进行分割(比如细胞或者血管)&#xff0c;这里进行眼底血管的分割&#xff0c;用的backbone是VGG16&#xff0c;结构如下如所示(项目里面的图片&#xff0c;借用的&#xff01;借用标记出处&…

C语言函数大全--h开头的函数

C语言函数大全 本篇介绍C语言函数大全–h开头的函数或宏 1. hypot&#xff0c;hypotf&#xff0c;hypotl 1.1 函数说明 函数声明函数功能double hypot(double x, double y);计算直角三角形的斜边长&#xff08;double&#xff09;float hypotf (float x, float y);计算直角…

UPA/URA双极化天线的协方差矩阵结构

文章目录UPA的阵列响应向量&#xff08;暂不考虑双极化天线&#xff09;UPA阵列响应&#xff1a;从单极化天线到双极化天线UPA双极化天线的协方差矩阵结构参考文献UPA的阵列响应向量&#xff08;暂不考虑双极化天线&#xff09; 下图形象描述了UPA阵列的接收信号 UPA阵列的水平…

【springcloud 微服务】Spring Cloud 微服务网关Gateway使用详解

目录 一、微服务网关简介 1.1 网关的作用 1.2 常用网关 1.2.1 传统网关 1.2.2 云原生网关 二、gateway网关介绍 2.1 问题起源 2.2 引发的问题 2.2.1 重复造轮子 2.2.2 调用低效 2.2.3 重构复杂 2.3 gateway改进 三、Spring Cloud Gateway 介绍 3.1 Gateway 概述 …

【JSON学习笔记】3.JSON.parse()及JSON.stringify()

前言 本章介绍JSON.parse()及JSON.stringify()。 JSON.parse() JSON 通常用于与服务端交换数据。 在接收服务器数据时一般是字符串。 我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。 语法 JSON.parse(text[, reviver])参数说明&#xff1a; text:必需&…

Angular可视化指南 - 用Kendo UI图表组件创建数据可视化

Kendo UI for Angular是专业级的Angular UI组件库&#xff0c;不仅是将其他供应商提供的现有组件封装起来&#xff0c;telerik致力于提供纯粹高性能的Angular UI组件&#xff0c;而无需任何jQuery依赖关系。无论您是使用TypeScript还是JavaScript开发Angular应用程序&#xff0…

【机器学习(二)】线性回归之梯度下降法

文章目录专栏导读1、梯度下降法原理2、梯度下降法原理代码实现3、sklearn内置模块实现专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN Python领域新星创作者&#xff0c;专注于分享python领域知识。 ✍ 本文录入于《数据分析之术》&#xff0c;本专栏精选了经典的机器…

1漏洞发现

漏洞发现-操作系统之漏洞探针类型利用修复 一、操作系统漏洞思维导图 相关名词解释&#xff1a; CVSS&#xff08;Common Vulnerability Scoring System&#xff0c;即“通用漏洞评分系统”&#xff09; CVSS是安全内容自动化协议&#xff08;SCAP&#xff09;的一部分通常C…