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

easyx的窗口函数

文章目录

  • 前言
  • 一、EasyX的颜色
  • 二、EasyX的坐标和设备
    • 1,EasyX的坐标
    • 2,EasyX的设备
  • 三、窗口函数
    • 1,初始化窗口函数
    • 2,关闭绘图窗口
    • 3,设置窗口背景板颜色
    • 4,清空绘图设备


前言

easyx是针对c++的图形库,可以帮助c/c++初学者快速上手图形和游戏编程,easyx就是封装了一些windows的函数,最终由windows的API实现,本次章节我们学习easyx的窗口创建


提示:以下是本篇文章正文内容,下面案例可供参考

一、EasyX的颜色

在现实生活中,我们所有见过的色彩都是基于三原色红绿蓝的不同配比形成的,而我们在使用EasyX颜色时候也是使用三原色来表示

代码表示:

RGB(红色部分,绿色部分,蓝色部分),每个颜色部分的值都是从0~255  

在这里括号括起来的是颜色的配比在这里小编用图给大家表示一下:在下面框出来的部分我们看到红色部分的值255,其他两个值为0,所以导致他是深红色,用上方代码表示就是RGB(255,0,0)。
在这里插入图片描述

二、EasyX的坐标和设备

1,EasyX的坐标

区别于c的程序,c的运行是一个控制台,而EasyX则是一个窗口,如下图,这个窗口是由坐标一样组成,区别于我们数学系的坐标EasyX,坐标原点默认的原点在窗口的左上角,X轴向右为正,y轴向下为负,它的单位就是像素点。

在这里插入图片描述


2,EasyX的设备

EasyX中,设备分为两种,一种是默认的绘图窗口,另一种是IMAGE对象。也就是在后面学习中我们会加载图片进来,加入加载两张图片,但是你只想对其中一张图片进行操作,这个就是设备IMAGE对象,而你需要对其中的那个使用的话可以使用SetWorkingImage()函数可以设置当前用于绘图的设备。设置了当前用于绘图的设备,后续所有的绘图操作函数都会在绘制在该设备上 。

initgraph(450,300) 
IMAGE img;  
loadimage(&img,"./set.jpg"); 
putimage(30,20,&img,SRCINVERT); 
IMAGE fimg; 
loadimage(&fimg,"./fire.jpg"); 
putimage(50,40, &fimg, SRCINVERT); 
SetWorkingImage(&fimg); 
for (int a = 0; a < 237; a++) {for (int b = 0; b < 237; b++) {fire.xy[a][b] = getpixel(a, b); }}

像上述的片段代码,我们定义了两个图形函数,但是后面我们只对fimg进行绘图操作


三、窗口函数

在上面我们看到了窗口如下图,但是我们要创建这样一个窗口,首先需要初始化窗口,初始化窗口就是你自己想设置多大就多大,单位是像素点,也就是假如你初始化一个500*400的窗口,那么它一共就有20000个像素点。

在这里插入图片描述

1,初始化窗口函数

初始化绘图窗口
代码形式:initgraph ( int width,int height,int flag );

在这里width 代表窗口的宽度
height 代表窗口的高度
flag 代表窗口的样式,默认为 NULL ,也就是你什么都不写,默认就是如上图那样
在下面while循环是一直为了显示窗口,没有窗口就直接跳走了

在这里我们创建一个600×600的窗口,然后最后面什么不写默认为NULL

int main()
{initgraph(600,600);while (1);return 0;
}

在这里插入图片描述

写flag=SHOWCONSOLE,是用于显示控制台的,也就是c语言的黑色控制台

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<easyx.h>
#include<graphics.h>
int main()
{initgraph(600,600,SHOWCONSOLE);while (1);return 0;
}

在这里插入图片描述

写flag=NOCLOSE,是窗口没有关闭功能

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<easyx.h>
#include<graphics.h>int main()
{initgraph(600,600,NOCLOSE);while (1);return 0;
}

在这里插入图片描述

写flag=NOMINIMIZE,是窗口没有关闭功能

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<easyx.h>
#include<graphics.h>int main()
{initgraph(600,600,NOMINIMIZE);while (1);return 0;
}

在这里插入图片描述

如果想一起包含使用则需要使用按位与操作

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<easyx.h>
#include<graphics.h>int main()
{initgraph(600, 600, NOMINIMIZE | NOCLOSE | SHOWCONSOLE);while (1);return 0;
}

在这里插入图片描述

2,关闭绘图窗口

既然有打开窗口函数,那么就有关闭窗口函数 closegraph();在这里我们为了方便看关闭窗口功能给开启窗口后十秒关闭延时来看

#define  _CRT_SECURE_NO_WARNINGS   
#include<stdio.h>  
#include<easyx.h>  
#include<graphics.h>  
#include<windows.h>  
int main()  
{initgraph(600, 600, NOMINIMIZE | NOCLOSE | SHOWCONSOLE);//while (1);  Sleep(10000); //延时10s  closegraph();  return 0;  
}

3,设置窗口背景板颜色

在我们显示窗口的时候我们发现窗口的背景颜色不好看,我们想换一种背景颜色于是我们可以使用设置窗口背景板颜色函数setbkcolor(颜色);参数是颜色,颜色可以用RGB()来进行配比,也可以写red,green等,但是记住需要大写。

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<easyx.h>
#include<graphics.h>
#include<windows.h>int main()
{initgraph(600, 600, NOMINIMIZE | NOCLOSE | SHOWCONSOLE);//设置背景颜色setbkcolor(RGB(255, 128, 255));while (1);closegraph();return 0;
}

在这里插入图片描述

在这里我们发现这个背景颜色没有变这是咋回事呀,听小编给你叨叨,我们之前讲了设备这个概念,分为两类,而我们现在操作的正是窗口设备,但是我们背景颜色是黑色,我们在重新给他弄颜色是不是需要给他先清除掉之前的设备的背景颜色,于是我们需要使用到一个清空绘图设备函数cleardevice();放在设置背景颜色后面即可,也就是我们把之前的设备背景颜色清除,然后设置的就会显示在上面,如果先使用清除函数,那么后面显示的还是原始设备的背景颜色黑色 。如下面第四个

4,清空绘图设备

cleardevice(),也即是清空之前设备上操作的东西包括背景颜色等等

#define  _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<easyx.h>
#include<graphics.h>
#include<windows.h>int main()
{initgraph(600, 600, NOMINIMIZE | NOCLOSE | SHOWCONSOLE);//设置背景颜色setbkcolor(RGB(255, 128, 255));cleardevice();while (1);closegraph();return 0;
}

在这里插入图片描述

相关文章:

easyx的窗口函数

文章目录 前言一、EasyX的颜色二、EasyX的坐标和设备1&#xff0c;EasyX的坐标2&#xff0c;EasyX的设备 三、窗口函数1&#xff0c;初始化窗口函数2&#xff0c;关闭绘图窗口3&#xff0c;设置窗口背景板颜色4&#xff0c;清空绘图设备 前言 easyx是针对c的图形库&#xff0c;…...

【记录】开始学习网络安全

本文持续更新学习进度 背景 在私企干了5年虚拟化、云原生相关的运维&#xff0c;学到了很多&#xff0c;但不成体系。老板是清华毕业法国留学在德勤干过&#xff0c;最后回国创业的野路子。我工作是为了更好的生活&#xff0c;我挺担心老板因为家庭变故或者炒个原油宝&#x…...

【Java EE初阶三 】线程的状态与安全(下)

3. 线程安全 线程安全&#xff1a;某个代码&#xff0c;不管它是单个线程执行&#xff0c;还是多个线程执行&#xff0c;都不会产生bug&#xff0c;这个情况就成为“线程安全”。 线程不安全&#xff1a;某个代码&#xff0c;它单个线程执行&#xff0c;不会产生bug&#xff0c…...

MD5算法

一、引言 MD5&#xff08;Message-Digest Algorithm 5&#xff09;是一种广泛应用的密码散列算法&#xff0c;由Ronald L. Rivest于1991年提出。MD5算法主要用于对任意长度的消息进行加密&#xff0c;将消息压缩成固定长度的摘要&#xff08;通常为128位&#xff09;。在密码学…...

Postman使用

Postman使用 Pre-request Script 参考&#xff1a; Scripting in Postman 可以请求、集合或文件夹中添加Pre-request Script&#xff0c;在请求运行之前执行JavaScript 如设置变量值、参数、Header和正文数据&#xff0c;也可以使用Pre-request Script来调试代码&#xff0…...

【python 的各种模块】(8) 在python使用matplotlib和wordcloud库来画wordcloud词云图

目录 目标&#xff1a;用python画出&#xff0c;网上流行的wordcloud词云图 1 准备工作 1.1环境准备 1.1.1安装步骤 1.2 资源准备 1.2.1 文本文件内容如下 1.2.2 图片资源 2 代码测试 2.1 第一版代码和效果 2.1.1 代码和效果 2.1.2 一般plt里解决中文乱码问题 2.1…...

MFC随对话框大小改变同时改变控件大小

先看一下效果; 初始; 窗口变大,控件也变大; 二个也可以; 窗口变大,控件变大; 默认生成的对话框没有WM_SIZE消息的处理程序;打开类向导,选中WM_SIZE消息,对CxxxDlg类添加该消息的处理程序;默认生成的函数名是OnSize; 添加了以后代码中会有三处变化; 在对话框类的…...

MK米客方德品牌 SD NAND在对讲机领域的引领作用

SD NAND在对讲机上的应用 SD NAND在对讲机上广泛应用&#xff0c;为其提供了高效可靠的存储解决方案。 这种存储技术不仅能容纳大量语音和数据文件&#xff0c;而且具有高速读取的特点&#xff0c;保障了实时通信的质量。SD NAND还注重安全性&#xff0c;通过数据加密和访问控…...

软件测试/测试开发丨Python 封装 学习笔记

封装的概念 封装&#xff08;Encapsulation&#xff09; 隐藏&#xff1a;属性和实现细节&#xff0c;不允许外部直接访问暴露&#xff1a;公开方法&#xff0c;实现对内部信息的操作和访问 封装的作用 限制安全的访问和操作&#xff0c;提高数据安全性可进行数据检查&#x…...

Vue: 事件修饰符, 键盘事件, 鼠标事件,计算属性

目录 事件修饰符 阻止默认事件 阻止冒泡 允许触发一次 捕获模式 self passive 键盘事件 keyup & keydown 按键别名 注意tab 注意系统按键 自定义按键 鼠标事件 简介 鼠标焦点事件 计算属性 差值语法实现 methods实现 computed实现 get() set() 总…...

【ROS2】MOMO的鱼香ROS2(四)ROS2入门篇——ROS2节点通信之话题与服务

ROS2节点通信之话题与服务点 引言1 理解从通信开始1.1 TCP&#xff08;传输控制协议&#xff09;1.2 UDP&#xff08;用户数据报协议&#xff09;1.3 基于共享内存的IPC方式 2 ROS2话题2.1 ROS2话题指令2.2 话题之RCLPY实现2.2.1 编写发布者2.2 2 编写订阅者2.2.3 运行测试 3 R…...

2022年山东省职业院校技能大赛高职组云计算赛项试卷第三场-公有云

2022年山东省职业院校技能大赛高职组云计算赛项试卷 目录 2022年职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 【任务1】公有云服务搭建[10分] 【适用平台】华为云 【题目1】私有网络管理[0.5分] 【题目2】云实例管理[0.5分] 【题目3】数…...

现代 NLP:详细概述,第 1 部分:transformer

阿比吉特罗伊 一、说明...

记一次Mac端mysql重置密码

在执行mysql命令的时候&#xff0c;报如下的错误&#xff0c;表示不支持mysql命令&#xff1a; zsh: command not found: mysql 1. 先查看mysql服务是否存在 在系统偏好设置中查看&#xff1a; 2. 发现mysql服务已经在运行&#xff0c;可能因为/usr/local/bin目录下缺失mysq…...

【开题报告】基于java的流浪之家动物领养网站的设计与开发

1.选题背景 流浪之家动物领养网站的设计与开发背景主要源于对流浪动物保护和宠物领养问题的关注。随着城市化进程加快&#xff0c;越来越多的流浪动物出现在城市中&#xff0c;它们面临着食物、住所和医疗资源的缺乏。同时&#xff0c;许多爱心人士希望能够给流浪动物一个温暖…...

训狗技术从初级到高级,专业有效的训狗训犬教程

一、教程描述 现在大部分人家里都会养些宠物&#xff0c;比如狗狗&#xff0c;虽然狗狗的一些行为习惯跟遗传有关&#xff0c;但是主人后天的影响也会给狗狗带来改变&#xff0c;本套教程教你纠正狗狗的不良行为&#xff0c;可以让你与狗愉快地玩耍。本套训狗教程&#xff0c;…...

如何让机器人具备实时、多模态的触觉感知能力?

人类能够直观地感知和理解复杂的触觉信息&#xff0c;是因为分布在指尖皮肤的皮肤感受器同时接收到不同的触觉刺激&#xff0c;并将触觉信号立即传输到大脑。尽管许多研究小组试图模仿人类皮肤的结构和功能&#xff0c;但在一个系统内实现类似人类的触觉感知过程仍然是一个挑战…...

datax

DataX DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台&#xff0c;实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。 https://github.com/alibaba/DataX Features DataX本身作为数据同…...

【Java】SpringBoot快速整合WebSocket实现客户端服务端相互推送信息

目录 什么是webSocket&#xff1f; webSocket可以用来做什么? WebSocket操作类 一&#xff1a;测试客户端向服务端推送消息 1.启动SpringBoot项目 2.打开网站 3.进行测试消息推送 4.后端进行查看测试结果 二&#xff1a;测试服务端向客户端推送消息 1.接口代码 2.使…...

C语言 linux文件操作(一)

文章目录 一、linux文件权限1.1文件描述符1.2文件描述符的范围和默认值1.3打开文件和文件描述符1.4标准文件描述符1.5文件描述符的重定向和关闭1.6I/O 操作1.7使用文件描述符进行进程通信1.8资源限制 二、C语言文件读写2.1open 函数2.2 flags参数详解2.3 lseek 函数 一、linux文…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

boost::filesystem::path文件路径使用详解和示例

boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类&#xff0c;封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解&#xff0c;包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...

工厂方法模式和抽象工厂方法模式的battle

1.案例直接上手 在这个案例里面&#xff0c;我们会实现这个普通的工厂方法&#xff0c;并且对比这个普通工厂方法和我们直接创建对象的差别在哪里&#xff0c;为什么需要一个工厂&#xff1a; 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类&#xff1a; 两个发…...

Easy Excel

Easy Excel 一、依赖引入二、基本使用1. 定义实体类&#xff08;导入/导出共用&#xff09;2. 写 Excel3. 读 Excel 三、常用注解说明&#xff08;完整列表&#xff09;四、进阶&#xff1a;自定义转换器&#xff08;Converter&#xff09; 其它自定义转换器没生效 Easy Excel在…...

接口 RESTful 中的超媒体:REST 架构的灵魂驱动

在 RESTful 架构中&#xff0c;** 超媒体&#xff08;Hypermedia&#xff09;** 是一个核心概念&#xff0c;它体现了 REST 的 “表述性状态转移&#xff08;Representational State Transfer&#xff09;” 的本质&#xff0c;也是区分 “真 RESTful API” 与 “伪 RESTful AP…...

window 显示驱动开发-如何查询视频处理功能(三)

​D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针&#xff0c;该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...