easyx的基本使用<一>(万字解析)

easyx的基本使用

  • 一.基本框架
    • 1.创建文件
    • 2.创建窗体-initgraph,closegraph,getchar
  • 二.简单的绘制
    • 1.圆形-circle
    • 2.坐标系统-setorigin,setaspectratio
  • 三.简单图形
    • 1.绘制点-putpixel
    • 2.简单的直线-line
    • 3.矩形-rectangle
    • 4.椭圆-ellipse
    • 5.圆角矩形-roundrect
    • 6.扇形-pie
    • 7.圆弧-arc
  • 四.多边形
    • 1.绘制封闭图形-polygon
    • 2.绘制非封闭图形-polyline
  • 五.图形的样式
    • 1.描边
      • 1.边的颜色-setlinecolor
      • 2.边的样式-setlinestyle
      • 3.端点的样式-setlinestyle
      • 4.连接样式-setlinestyle
    • 2.填充-setfillcolor
    • 3.描边加填充-fill
    • 4.背景色更改-setbkcolor,cleardevice
  • 六.一个训练-哆啦A梦

在这里插入图片描述

easyx是一款使用成本极低的图形库插件,可以快速通过c语言绘制出图形 安装官网。需要的图形几乎只需要通过查阅函数就可以实现。ps:easyx只支持VS系列。

一.基本框架

1.创建文件

使用easyx创建项目选择控制台。

在这里插入图片描述

创建源文件时使用cpp为后缀,因为cpp为c++后缀。easyx内部是由c++语法实现的,但是不用担心因为easyx使用的是一系列既可由c++实现又可由c实现的函数。

在这里插入图片描述

2.创建窗体-initgraph,closegraph,getchar

平常在打印c程序时会出现一个黑色的控制台,而在使用easyx时我们创建一个可大可小的窗体以便我们调整。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二.简单的绘制

1.圆形-circle

在这里插入图片描述

在这里插入图片描述

可以看到确实画出来一个圆,但园的位置在最左上角。这就是easyx的坐标系统造成的啦。

2.坐标系统-setorigin,setaspectratio

我们一般意义上的直角坐标系原点位于中心,并且y轴的正方向向上。

在这里插入图片描述

但在easyx里有所不同的是,easyx有两种坐标分别是:逻辑坐标和物理坐标。

在这里插入图片描述

表面上看来物理坐标和逻辑坐标是没什么区别的实际上有着很大区别。物理坐标是用于描述窗体的坐标,不能被修改;而逻辑坐标是用于描述绘图的坐标,可以被修改。

接下来我们把逻辑坐标移到窗体中心。

在这里插入图片描述

在这里插入图片描述

这里的坐标与我们常用的坐标还是有所差异,因为y轴是向下的,所以我们需要将y轴向上翻转。

在这里插入图片描述

如果缩放因子为负则可实现该坐标轴的翻转。

在这里插入图片描述

三.简单图形

1.绘制点-putpixel

在这里插入图片描述

为了使现象更明显,随机画1000个白色的点。其中使用到随机数可以看看这篇设置随机数

在这里插入图片描述

2.简单的直线-line

`1

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.矩形-rectangle

在这里插入图片描述

从传参可以看出实际上就是矩形左上顶点和右下顶点。

在这里插入图片描述

4.椭圆-ellipse

在这里插入图片描述

从传参可以看出,其实就是传一个矩形,再通过矩形内切一个椭圆(具体怎么内切由该函数实现)。

在这里插入图片描述

5.圆角矩形-roundrect

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.扇形-pie

在这里插入图片描述

确定一个扇形需要先确定一个椭圆,再确定起始角度和终止角度就可以了。

在这里插入图片描述

在这里插入图片描述

7.圆弧-arc

在这里插入图片描述

参数与扇形是一样的,区别在于圆弧少了两条线。具体怎么缺少由arc函数实现。

在这里插入图片描述

四.多边形

1.绘制封闭图形-polygon

在这里插入图片描述

这里的piont是easyx自带的一个结构体,组成如下:

在这里插入图片描述

例子三角形

在这里插入图片描述

同理,想要绘制出梯形,五边形,六边形…只需要将它们的顶点合成一个数组,再传入polygon即可。

2.绘制非封闭图形-polyline

polygon会将所有线段连接起来,例如我们想用polygon绘制字母W是办不到的。

在这里插入图片描述

polyline与polygon的参数是一致的,唯一的区别是polyline不会连接首尾两个端点。

在这里插入图片描述

在这里插入图片描述

五.图形的样式

1.描边

1.边的颜色-setlinecolor

在这里插入图片描述

这是一个简单的圆形,我们仔细观察可以发现是由白色的线条构成。我们将白色的线条称为描边,描边默认是白色的。我们怎样修改边的颜色呢?

在这里插入图片描述

在这里插入图片描述

当然仅仅有颜色是不够的,我们还需要边的样式。

2.边的样式-setlinestyle

在这里插入图片描述

这里有4个参数,但后两个我们可以默认不传参。我们来看一下style。

在这里插入图片描述

easyx中定义了7种不同的常量代表不同的样式(最后一种是自定义)。

在这里插入图片描述

下面演示虚线样式。

在这里插入图片描述

可以看到确实成功了但线条太细了,我们想要更粗一些。这时得用到第二个参数了。

在这里插入图片描述

3.端点的样式-setlinestyle

关于端点的样式,easyx里有三种选择。

在这里插入图片描述

下面演示圆端点。

在这里插入图片描述

4.连接样式-setlinestyle

easyx里有三种连接样式。

在这里插入图片描述

下面以斜面连接为例。

在这里插入图片描述

2.填充-setfillcolor

填充与绘制图形的函数几乎是一样的,总是在前面加上solid。例如圆的函数是circle,那么它的填充函数就是solidcircle。

在这里插入图片描述

可以看到的确进行了填充,但填充的颜色是默认的白色,如果想要改变颜色则需要下面函数。

在这里插入图片描述

在这里插入图片描述

3.描边加填充-fill

只需要在描边函数前面加上fill就可以了。例如,一个简单的圆形描边是circle函数,既使用描边又使用填充的圆就是fillcircle。

以下一个圆形的描边颜色是红色虚线,填充颜色为黄色

在这里插入图片描述

4.背景色更改-setbkcolor,cleardevice

默认背景颜色是黑色,想要更改也很简单。就像粉刷墙面一样,setbkcolor就是让你拥有一个特定颜色的刷子。而cleardevice就相当于用这把刷子粉刷墙面。所以两个函数需要一起使用才能达到目的。

在这里插入图片描述

六.一个训练-哆啦A梦

#include<stdio.h>
#include<easyx.h>
#define PI 3.14
int main()
{initgraph(1024, 1024);setbkcolor(WHITE);cleardevice();setlinecolor(BLACK);setlinestyle(PS_SOLID, 10);setfillcolor(BLUE);fillellipse(118, 125, 990, 931);//蓝色头部setfillcolor(WHITE);fillellipse(189, 271, 919, 931);//白色脸部fillellipse(375, 170, 555, 420);fillellipse(555, 170, 735, 420);//眼框setfillcolor(BLACK);solidcircle(484, 333, 25);solidcircle(617, 333, 25);//瞳孔setfillcolor(WHITE);solidcircle(484, 333, 10);solidcircle(617, 333, 10);//眼部高光setfillcolor(RED);fillcircle(554, 420, 35);line(554, 460, 554, 828);//鼻子和竖线arc(320, 510, 789, 827, PI, 2 * PI);//嘴吧line(125, 313, 296, 410);line(83, 444, 270, 474);line(83, 595, 262, 527);line(819, 414, 990, 320);line(845, 478, 1029, 448);line(853, 542, 1029, 660);//胡须getchar();closegraph();return 0;
}

在这里插入图片描述

ps:以上资料来源于c语言小游戏实战。

在这里插入图片描述

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

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

相关文章

ElasticSearch01

ElasticSearch 版本&#xff1a;7.8 学习视频&#xff1a;尚硅谷 笔记&#xff1a;https://zgtsky.top/ ElasticSearch介绍 Elaticsearch&#xff0c;简称为es&#xff0c; es是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b…

JMeter 测试脚本编写技巧

JMeter 是一款开源软件&#xff0c;用于进行负载测试、性能测试及功能测试。测试人员可以使用 JMeter 编写测试脚本&#xff0c;模拟多种不同的负载情况&#xff0c;从而评估系统的性能和稳定性。以下是编写 JMeter 测试脚本的步骤。 第 1 步&#xff1a;创建测试计划 在JMet…

JVM——垃圾回收(方法区中的垃圾回收和(堆回收)自动垃圾回收)

目录 1.自动垃圾回收介绍1.C/C的内存管理2.Java的内存管理3.垃圾回收的对比 2.方法区的回收方法区的回收 – 手动触发回收 3.堆回收1.引用计数法2.可达性分析算法 1.自动垃圾回收介绍 1.C/C的内存管理 ⚫ 在C/C这类没有自动垃圾回收机制的语言中&#xff0c;一个对象如果不再…

C语言—什么是数组名

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int arr[]{1,2,3,4};printf("%p\n",arr);printf("%p\n",&arr);printf("%p\n",*arr);return 0; } 结论&#xff1a;数组名是数组首元素地址&#xff08;下标为0的元素…

Vatee万腾独特科技力量的前沿探索:Vatee的数字化奇点

在当今科技的浪潮中&#xff0c;Vatee万腾以其独特的科技力量成为前沿探索的引领者&#xff0c;正迎来数字化奇点的新时代。Vatee万腾不仅仅是一家科技公司&#xff0c;更是一支探索未知领域、开创数字时代新局面的先锋力量。 Vatee万腾的数字化奇点体现在其对前沿技术的深刻理…

MFC设置单选按钮点击自己可以可选和不可选

mfc是c的一个框架&#xff0c;可谓是经久不衰。最近博主遇到一个问题&#xff0c;就是单选按钮点击自己可以设置可选和不可选&#xff0c;貌似类似复选框一样&#xff0c;但领导分发的任务上要求的是用单选按钮实现复选框这种类似功能&#xff0c;实现效果类似如下图&#xff1…

【Java】认识异常

文章目录 一、异常的概念和体系结构1.异常的概念2.异常的体系结构3.异常的分类 二、异常的处理1.防御式异常2.异常的抛出3.异常的捕捉 三、异常的处理流程四、自定义异常类 一、异常的概念和体系结构 1.异常的概念 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为…

Redis实战篇(一)短信登录

Redis实战篇&#xff08;一&#xff09;短信登录 1.1、导入黑马点评项目 1.1.1 、导入SQL 1.1.2、有关当前模型 手机或者app端发起请求&#xff0c;请求我们的nginx服务器&#xff0c;nginx基于七层模型走的事HTTP协议&#xff0c;可以实现基于Lua直接绕开tomcat访问redis&a…

截图转HTML代码,支持预览,前端不用浪费时间写html和css了

截图转代码 试用地址&#xff1a;https://picoapps.xyz/free-tools/screenshot-to-code 这个简单的应用可以将截图转换为HTML/Tailwind CSS代码。它使用GPT-4 Vision来生成代码&#xff0c;并使用DALL-E 3来生成类似的图像。现在你也可以输入一个URL来克隆一个现有的网站&#…

RuntimeError: CUDA error: device-side assert triggered

背景&#xff1a; 使用SAGEConv卷积层的图神经网络&#xff0c;网络架构如下 原因&#xff1a; 我在卷积层之前改变了特征矩阵的维度&#xff0c;原本为[172,1,32] 现在改为了 [172,2,32]。导致了特征矩阵x在进行 “x x.squeeze(1)” 操作时并没有将第二向量值去除&#xff08…

蓝桥杯每日一题2023.11.25

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 对于此题目最开始是递归想法&#xff0c;但发现题意中的匹配次数实际上是指在这8个字母中这8个字母每个字母对应的个数是否相同&#xff0c;如果相同则匹配。 此处我们可以使用subsrtr函数&#xff0c;每次循环截取8个字…

印刷基板开孔机上的直线导轨怎么安装?

直线导轨是属于高精度的传动元件&#xff0c;作为印刷基板开孔机重要的传动元件&#xff0c;倘若安装不当&#xff0c;严重则无法正常作业&#xff0c;轻则影响直线导轨的精度和寿命。那么&#xff0c;印刷基板开孔机的直线导轨是如何安装的呢&#xff1f; 在安装前&#xff0c…

中通单号查询,中通快递物流查询,将途经指定城市的单号筛选出来

批量查询中通快递单号的物流信息&#xff0c;并将途经指定城市的单号筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;第一次使用的朋友记得先注册&#x…

【差旅游记】走进新疆哈密博物馆

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 前些天在新疆哈密时&#xff0c;有天下午有点时间&#xff0c;看离住的宾馆不远就是哈密博物馆&#xff0c;便去逛了逛博物馆&#xff0c;由于接下来的一段时间没顾上记录&#xff0c;趁今天有些时间简单记录下那短暂的…

STM32 CAN协议讲解以及代码

STM32 CAN 文章目录 STM32 CAN前言一、CAN外设1.主控制寄存器CAN_MCR2.位时序寄存器CAN_BTR3.CAN的发送邮箱4.CAN的接收FIFO5.验收筛选器 二、代码配置1.初始化2.发送数据3.接收数据4.main.c 前言 前面学习了CAN的一些理论知识&#xff0c;他在我们的STM32里面是怎么用的呢 前…

【手写实现一个简单版的Dubbo,深刻理解RPC框架的底层实现原理】

手写实现一个简单版的Dubbo&#xff0c;深刻理解RPC框架的底层实现原理 RPC框架简介了解Dubbo的实现原理服务暴露服务引入服务调用 手写实现一个简单版的Dubbo服务暴露ServiceBeanProxyFactory#getInvokerProtocol#exportRegistryProtocol#export 服务引入RegistryProto#referD…

matlab画双坐标图的样式

matlab画双坐标图的样式 %% clc,clear,close all; t0:0.1:9*pi; figure; [AX,Ha,Hb]plotyy(t,sin(t),t,exp(t)); % 绘图并创建句柄 % ----------------- 设置刻度 set(AX(1),yTick,[-1.250:0.25:1.25]) % 设置左边Y轴的刻度 set(AX(2),yTick,[0:50:350]) …

服务器连接github

https://zhuanlan.zhihu.com/p/543490354 比着这个一步步做就行。 https://blog.l0v0.com/posts/94ffdbdf.html 上传文件可以看这个 注意&#xff1a; 密钥ssh-keygen设置好之后&#xff0c;以后就不用每次输入账号密码才能访问了。 otherwise&#xff0c;每次要输入账号密码。…

文件批量改名方法:文件自动批量重命名,提升文件管理效率

在日常工作中随着工作时间的推移&#xff0c;在文件数量日益增长的情况下&#xff0c;会在电脑中积累大量的文件。如果文件名混乱无序&#xff0c;查找和识别重要文件将变得非常困难。这不仅会浪费大量的时间和精力&#xff0c;还可能导致重要文件的丢失或混乱。文件批量改名可…

高级驾驶辅助系统 (ADAS)介绍

随着汽车技术持续快速发展,推动更安全、更智能、更高效的驾驶体验一直是汽车创新的前沿。高级驾驶辅助系统( ADAS ) 是这场技术革命的关键参与者,是 指集成到现代车辆中的一组技术和功能,用于增强驾驶员安全、改善驾驶体验并协助完成各种驾驶任务。它使用传感器、摄像头、雷…