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;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/284673.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

48、激活函数 - 梯度消失和梯度爆炸

简单介绍下梯度消失和梯度爆炸,这个不是重点,但是我觉得有必要再深入了解这个概念,以及很多激活函数为什么是可以防止梯度消失的。 梯度消失和梯度爆炸实际上是在神经网络训练过程中经常会遇到的两类问题,这两类问题都与梯度有关。 什么是梯度 在神经网络训练中,梯度是指…

2023年总结及2024年规划:我们结婚啦

目录 1、回首2023 1.1、生活方面 1.2、工作方面 1.3、学习方面 2、展望2024 2.1、生活方面 2.2、工作方面 2.3、学习方面 2023年最重要的事情当然是我们结婚啦&#xff01; 1、回首2023 1.1、生活方面 今年五一假期&#xff0c;我和对象回老家在双方亲友的见证下完…

【LMM 004】LLaVA-RLHF:用事实增强的 RLHF 对齐大型多模态模型

论文标题&#xff1a;Aligning Large Multimodal Models with Factually Augmented RLHF 论文作者&#xff1a;Zhiqing Sun, Sheng Shen, Shengcao Cao, Haotian Liu, Chunyuan Li, Yikang Shen, Chuang Gan, Liang-Yan Gui, Yu-Xiong Wang, Yiming Yang, Kurt Keutzer, Trevor…

图片预览 element-plus 带页码

vue3、element-plus项目中&#xff0c;点击预览图片&#xff0c;并显示页码效果如图 安装 | Element Plus <div class"image__preview"><el-imagestyle"width: 100px; height: 100px":src"imgListArr[0]":zoom-rate"1.2":max…

Java中利用Redis,ZooKeeper,数据库等实现分布式锁(遥遥领先)

1. 分布式锁 1.1 什么是分布式锁 在我们进行单机应用开发涉及并发同步的时候&#xff0c;我们往往采用synchronized或者ReentrantLock的方式来解决多线程间的代码同步问题。但是当我们的应用是在分布式集群工作的情况下&#xff0c;那么就需要一种更加高级的锁机制&#xff0…

【2023年终总结】 | 时光之舟:乘载着回忆与希望穿越2023,抵达2024

文章目录 1 回忆2 希望 1 回忆 2023年对我来说是非常梦幻的一年&#xff0c;我在2023年初的时候确认去做AI方向&#xff0c;在这之前我尝试了前端开发&#xff0c;移动App开发&#xff0c;云FPGA等方向&#xff0c;但是感觉自己都不是很喜欢&#xff0c;然后就开始尝试新的方向…

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项样题卷③

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第3套&#xff09; 目录 2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项&#xff08;高职组&#xff09; 样题&#xff08;第3套&#xff09; 模块…

vmware安装openEuler 22.03 LTS操作系统

vmware安装openEuler 22.03 LTS操作系统 1、下载openEuler操作系统镜像文件2、安装openEuler操作系统3、配置openEuler操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载openEuler操作系统镜像文件 官网下载链接 链接: https://www.openeuler.or…

010、切片

除了引用&#xff0c;Rust还有另外一种不持有所有权的数据类型&#xff1a;切片&#xff08;slice&#xff09;。切片允许我们引用集合中某一段连续的元素序列&#xff0c;而不是整个集合。 考虑这样一个小问题&#xff1a;编写一个搜索函数&#xff0c;它接收字符串作为参数&a…

QT上位机开发(图形绘制)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 图形绘制是上位机软件开发很重要的一个功能。这个图形绘制&#xff0c;有的是离线的&#xff0c;有的是实时绘制的。就我个人而言&#xff0c;离线…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前数据吞吐量(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK里函数来获取相机当前数据吞吐量&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的数据吞吐量的技术背景CameraExplorer如何查看相机吞吐量信息在NEOAPI SDK里通过函数获取相机接口吞吐量 Baumer工业相机通过NEOAPISDK获…

美团到店终端从标准化到数字化的演进之路

总第580篇 | 2023年第032篇 本文整理自美团技术沙龙第76期《大前端研发协同效能提升与实践》。前端团队在产研多角色协同形式上存在不同阶段&#xff0c;而大前端多技术栈在各阶段都有其独特的实践&#xff0c;同时又有类似的演进路线。本文从到店终端团队移动端和前端技术栈持…

用python做猴子摘桃的题目,java猴子爬台阶算法

本篇文章给大家谈谈猴子爬山算法java完整代码&#xff0c;以及用python做猴子摘桃的题目&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 """ 一天一只猴子想去从山脚爬到山顶&#xff0c;途中经过一个有N个台阶的阶梯&#xff0c;但是这猴子有…

Embedding模型在大语言模型中的重要性

引言 随着大型语言模型的发展&#xff0c;以ChatGPT为首&#xff0c;涌现了诸如ChatPDF、BingGPT、NotionAI等多种多样的应用。公众大量地将目光聚焦于生成模型的进展之快&#xff0c;却少有关注支撑许多大型语言模型应用落地的必不可少的Embedding模型。本文将主要介绍为什么…

12 HAL库的硬件SPI驱动数码管

引言&#xff1a; 本文将为大家介绍一下SPI&#xff0c; 数码管的知识&#xff0c; 以及HAL库驱动SPI接口的数码的代码示例。 一、SPI的基础知识 1. SPI简介 01 SPI是串行外设接口&#xff08;Serial Peripheral Interface&#xff09;的缩写 02 是美国摩托罗拉公司&#xff08…

5个用于构建Web应用程序的Go Web框架

探索高效Web开发的顶级Go框架 Go&#xff08;或称为Golang&#xff09;以其简洁性、高效性和出色的标准库而闻名。然而&#xff0c;有几个流行的Go Web框架和库为构建Web应用程序提供了额外的功能。以下是五个最值得注意的Go框架&#xff1a; 1. Gin&#xff1a; Gin是一个高…

加法器原理详解

加法器的介绍与原理分析 什么是加法器&#xff1f; 加法器是一种数字电路&#xff0c;用于将两个二进制数相加并输出它们的和。 如何实现加法器 要讨论如何实现加法器就要先从只有一位的数字先进行考虑 一位二进制数相加 不考虑来自低位的进位——半加器 对于一位二进制…

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

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

hugo-theme-kiwi V0.0.2 博客主题上新了时间轴

至此佳节&#xff0c;我在此给正在屏幕前浏览本文的您和您的家人&#xff0c;恭祝元旦快乐&#xff0c;虽然&#xff0c;这声祝福是晚了&#xff0c;但却不妨碍我我由内心深处对您和您的家人的诚挚祝福&#xff01; 新的一年&#xff0c;从这一天逐渐步入我们的生活&#xff0c…

你好2024!

大家好&#xff0c;我是小悟 2024年1月1日&#xff0c;新年的第一天&#xff0c;阳光明媚&#xff0c;空气中弥漫着希望和新的开始的气息。在这个特别的日子里&#xff0c;大家纷纷走出家门&#xff0c;迎接新年的到来。 街道上&#xff0c;熙熙攘攘的人群中&#xff0c;有孩…
最新文章