继续学习Easyx

news/2024/4/24 20:28:31/

画圆角矩形函数:roundrect,前四个参数是和矩形一样的,表示先画一个矩形,然后就是要画它的圆角了,要怎么画它的圆角?这里使用四个一样的椭圆来将它的四个角画出来,而在这个里面的椭圆不再需要四个参数也就是两个点了,这里每个椭圆的一个点已经确定,我们只要知道另一个点就行了,但是这时候计算机显然用了另一个更为方便的方法,就是当用那四个参数画出了矩形之后,只要知道椭圆的长宽就可以在矩形四个角处画出四个一模一样的椭圆;这样就正好构成了圆角矩形的四个圆角,再经过一些处理,就化画成了圆角矩形了,这里演示一下:

 其实确定这个矩形的长宽和确定他的另一个坐标没什么区别,就是对于使用者来说比较方便;

画完一个矩形后,计算机会在另外四个角重复上述步骤画出一样的,当然这里是我用画图工具画的,当然有点不一样TAT;

 

 

 所以说圆角矩形(英文是roundrectangle)这里函数roundrect是它的简写,有六个参数,分别是确定矩形的两个坐标,还有就是椭圆的长和宽;(这里有一个要注意的,如果这个椭圆的长宽都超过了超过了矩形的,(当然一个超过了还是可以的,别超过太多)画出来的就不是圆角矩形了:);

#include<stdio.h>
#include<easyx.h>
int main()
{initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);roundrect(-100, -200, 100, 200, 50, 50);getchar();closegraph();}

 

画扇形函数:要画一个扇形,可以从椭圆里面截取:只要在椭圆里面截取部分就行了,如何选取部分?这时候就要用到角度了,但是在变成里面采用的是弧度制,也就是要用角度之前先要定义一个常数PI;所以这个函数有六个函数:四个参数用来画椭圆,另外两个参数用来表示要截取的的起始弧度和终止弧度;起始位置是从椭圆的最右边开始为零弧度;再设置了x,y分别向右向上为正方向,则就是以朝顺时针为正方向;对于这个函数的记忆:可以想到这个函数画出来很像苹果派的一部分,所以就是pie,意为苹果馅饼哈哈;

#include<stdio.h>
#include<easyx.h>
#define PI 3.14
int main()
{initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);pie(-100, -200, 100, 200, 0, PI/4);getchar();closegraph();return 0;}

 

画圆弧函数:

也是画扇形函数一样的参数,可以想象扇形的那个弧度处就是弧形也就是我们要画的:所以它也有6个参数,和扇形的一样;它的函数就是圆弧的英文arc代码如下:

#include<stdio.h>
#include<easyx.h>
#define PI 3.14
int main()
{initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);arc(-100, -200, 100, 200, 0, PI/4);getchar();closegraph();return 0;}

画多边形函数:

这个就有一点复杂了:这里涉及一个POINT类型的数组(在easyx.h头文件里面有它的定义,这是一个结构体,里面有两个元素,一个是点的x坐标,另一个是y坐标,这里只要用就行了)polygon有两个参数,一个是POINT型的指针,一个是这个数组的元素数量;然后计算机就会根据这里个点的先后顺序,依次连接它们,构成一个封闭图形;当然,这个函数名也就是它的英语polygon

这里画一个不规则的四边形:

#include<stdio.h>
#include<easyx.h>
int main()
{initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);POINT points[4] = { {100,-200},{0,200},{-10,100},{-100,-200} };polygon(points, 4);getchar();closegraph();return 0;
}

如果想要画一个规则的形状,自己算的话很难算,所以这时候可以用一点技巧:比如可以用角度计算加循环,比如要画一个五边形;可以把它画在原点处从它的最高的顶点开始,这时候它的最高顶点在y轴,角度刚好为90度,然后每个点都加了72度,当然,这里不是要画弧,不需要根据计算机的默认角度转向计算,可以按照自己的习惯,因为这里只是计算它的坐标,这里画图更好理解:

所以这里要用到角度来求坐标,要用到sin和cos函数,所以要引用头文件#include<math.h>,这个求坐标涉及到数学知识,可以画图求解;

#include<stdio.h>
#include<easyx.h>
#include<math.h>
#define PI 3.14
int main()
{initgraph(800, 600);setorigin(400, 300);setaspectratio(1, -1);double theta = PI / 2;double delta = PI * 2 / 5;POINT points[5];int r = 100;for (int i = 0; i < 5; i++){points[i].x =cos(theta+delta*i)*r;points[i].y =sin(theta+i*delta)*r;}polygon(points, 5);getchar();closegraph();return 0;
}

 

 当然有时候我们画图不想画封闭图形,就想留一个口子,这时候就有一个和polygon原理一样但是最后不会将最后一个点和第一个点连起来的函数polyline;如果同样是这份代码,把polygon函数换成polyline(它的英文翻译后的意思是多段线,也有多边形的意思,但是记第一个不容易搞混)函数就会变成这样:

 

到这里今天的介绍也结束了~

难熬的日子总会过去, 不信回头看看, 你都已经在不知不觉中熬过了很多苦难。


http://www.ppmy.cn/news/46498.html

相关文章

Java基础——IO流+字节/字符流使用

IO流 &#xff08;1&#xff09;IO流的概述&#xff1a; IO流也称为输入&#xff0c;输出流&#xff0c;就是用来读写数据的。I表示input&#xff0c;是数据从硬盘文件读入到内存的过程&#xff0c;称之输入&#xff0c;负责读。O表示output&#xff0c;是内存程序的数据从内…

【DES详解】(一)处理input block(64 bits)

一、DES 加密算法总览 0-1、初识置换 IP&#xff08;Initial Permutation&#xff09; 输入&#xff1a;明文&#xff08;64 bits&#xff09; 过程&#xff1a;初识置换 输出&#xff1a;处理后的明文permuted input&#xff08;64 bits&#xff09; 首先&#xff0c;对需要解…

扫清盲点:带你学习 树状数组 这种数据结构

什么是树状数组 树状数组是一种用于维护数列前缀和的数据结构&#xff0c;它可以在 O(logn) 的时间复杂度内修改单个元素的值&#xff0c;以及查询某个区间的元素和。 树状数组的特点是什么&#xff1f; 树状数组的特点其实就是&#xff0c;在单点修改 &#xff0c;和区间查询…

Java 线程

线程&#xff1a;线程是进程的组成部分&#xff0c;一个进程可以拥有多个线程&#xff0c;而一个线程必须拥有一个父进程。线程可以拥有自己的堆栈&#xff0c;自己的程序计数器和自己的局部变量&#xff0c;但不能拥有系统资源。它与父进程的其他线程共享该进程的所有资源。 …

JSON学习|一篇就够了|(超详细|保姆级)

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;老茶icon &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;计…

BZOJ 2940 条纹

题目大意 条纹游戏是一个双人的游戏。所需要的物品有一个棋盘以及三种颜色的长方形条纹&#xff0c;这三种颜色分别是红色、绿色和蓝色。红色条纹的尺寸是 c 1 c\times 1 c1&#xff0c;绿色条纹的尺寸是 z 1 z\times 1 z1&#xff0c;蓝色条纹的尺寸是 n 1 n\times 1 n1。…

Qt使用std::thread更新QPlainTextEdit内容

Qt使用std::thread更新QPlainTextEdit内容 一、演示二、部分代码讲解1. 启动函数2. 线程函数 三、代码片段1. 主函数2. MainWindow.h3. MainWindow.cpp 源文件 四、TCP相关解释 导言&#xff1a;记录Qt使用std::thread更新QPlainTextEdit内容 在写一个简易的服务端发送软件中&a…

全链路压测时动态路由数据源MySQL、MongoDB、Redis

目录 一、全链路压测 二、动态路由Mysql 1. 参数配置application-localDynamic.yml 2. 加载配置参数DynamicDataSourceProperties.java 3. 动态数据源DynamicDataSource.java 4. 动态数据源供应DynamicDataSourceProvider.java 5. 动态数据源bean 6. 动态数据源上下文D…

docker上面安装mysql

一、docker安装mysql 新建配置 /data/mysql3306/conf/my.cnf(新建logs,data,conf/my.cnf 后面要用) 详情&#xff1a; [mysql] #设置mysql客户端默认字符集 default-character-setUTF8MB4[mysqld] #设置3306端口 port3306#允许最大连接数 max_connections200#允许连接失败的次…

Diffusion模型系列文章

DDPM 论文 扩散模型包括两个过程&#xff1a;前向过程&#xff08;forward process&#xff09;和反向过程&#xff08;reverse process&#xff09;&#xff0c;其中前向过程又称为扩散过程&#xff08;diffusion process&#xff09;&#xff0c;如下图所示&#xff0c;从 …

Echarts总结

Echarts简介 echarts&#xff0c;是一个使用js实现得开源可视化库&#xff0c;可以流畅的运行在pc和移动设备上&#xff0c;兼容当前绝大部分浏览器&#xff08;IE9/10/11, Chrome,Firefox,Safari等&#xff09;&#xff0c;底层依赖矢量图形库ZRender,提供直观&#xff0c;交…

面试官:自动化测试都没弄明白,你怎么敢来面试的?

最近看了很多简历&#xff0c;很多候选人年限不小&#xff0c;但是做的都是一些非常传统的项目&#xff0c;想着也不能通过简历就直接否定一个人&#xff0c;何况现在大环境越来 越难&#xff0c;大家找工作也不容易&#xff0c;于是就打算见一见。 在沟通中发现&#xff0c;由…

【深度学习】windows10环境配置详细教程

【深度学习】windows10环境配置详细教程 文章目录 【深度学习】windows10环境配置详细教程Anaconda31.安装Anaconda32.卸载Anaconda33.修改Anaconda3安装虚拟环境的默认位置 安装cuda/cudnn1.安装合适的CUDA2.安装对应的CUDNN3.卸载CUDA/CUDNN conda虚拟环境独立安装cuda/cudnn…

多线程并发编程笔记07(小滴课堂)容器

同步容器 我们写这样一段代码。 我们想对vector容器在遍历时&#xff0c;去根据条件删除&#xff1a; 会出现异常。 那正确的方式应该如何去写呢&#xff0c;这里就涉及到了迭代器&#xff1a; 单线程中我们是这么做的。 那么多线程中呢&#xff1f; 有的时候它会报这个错误…

通达信欧奈尔RPS指标公式编写和设置方法(完全版)

通达信欧奈尔RPS指标公式的编写和设置较为复杂&#xff0c;对于初学者来说可能具有一定挑战性。在编写口袋支点公式时&#xff0c;需要使用RPS指标公式作为基础条件&#xff0c;因此有必要先了解其编写和设置方法。 一、上市一年以上选股 首先选出上市一年以上的股票&#xff…

代码随想录_二叉树_leetcode700、98

leetcode700.二叉搜索树中的搜索 700. 二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 示例 1: 输入&…

new/delete内存分配操作符

目录 一、C/C的内存分布 二、new与delete操作符 1.new/delete 的使用 2.new申请失败抛异常 3.new/delete操作内置类型 4.new/delete 操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 1.对于内置类型 2.对于自定义类型 ①new的实现…

你的宝典,软件测试项目实战,金融项目测试点详全(超详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试要点 软件测试…

做个清醒的程序员之破解内卷漩涡

阅读时长约 12 分钟&#xff0c;共计 2764 个字。 说到“内卷”&#xff0c;这个近几年很流行的词&#xff0c;大家都很熟悉了吧&#xff1f; 如果追根溯源&#xff0c;内卷其实也是一个舶来词&#xff0c;它的英文是“Involution”&#xff0c;即“内卷化”。如果用生动一些…

vue大坑:v-for的key以及props传参不当导致的闭包

为什么props传参在模版中使用没问题&#xff0c;在函数中使用不变化 场景 当我们点击上方的月份时&#xff0c;会改变下方加载的卡片信息 代码&#xff1a; 父组件&#xff1a; <divv-for"(item, index) in vocalStore.getCardMonthData":key"index"…