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

easyx图形库基础:1.基本概念的介绍+图形的绘制。

基本概念的介绍+图形的绘制

  • 一.基本概念的介绍。
    • 1.为什么要使用easyx图形库
    • 2.安装easyx图形库。
    • 3.语法相关
  • 二.图形绘制
    • 1.窗体创建和坐标的概念。
      • 1.基本窗体的创建。
      • 2.坐标概念
      • 3.改变逻辑坐标。
    • 2.设置图形颜色
      • 1.设置描边颜色和描边样式。
      • 2.设置图形填充颜色和填充样式
      • 3.绘制图形只有填充样式或者绘制图形有填充和描边。
    • 3.基本图形绘制。
      • 0.改变背景颜色
      • 1.绘制点:
      • 2.绘制线:
      • 3.绘制圆:
      • 4.绘制矩形:
      • 5.绘制椭圆:
      • 6.绘制圆角矩形:
      • 7.绘制扇形:
      • 8.绘制圆弧:
  • 三.多边形的绘制
    • 1.绘制多边形基本方法
    • 2.进阶方法。
    • 3.绘制五边形
    • 4.不封闭图形绘制
  • 四:颜色模型的使用
    • 1.RGB
    • 2.HSV
  • 五:设置剪切区域
    • 1.基本概念:
    • 2.组合区域:

一.基本概念的介绍。

1.为什么要使用easyx图形库

标准库头文件 stdio.h 中声明的 printf 、 putchar 等函数可以实现将字符输出到控制台上。程序运行后,将出现黑底白字的控制台。而用户可以使用键盘输入字符到控制台,接着这些字符可以被 scanf 、 getchar 等函数读取。这也是老一辈用户与计算机交互的常规方式。而如今,图形化技术已经渗透到计算机应用的每个角落。对于普通用户而言,他们更乐意在屏幕上看到五彩缤纷图像和各式各样按钮,而不是仅能通过字符与计算机进行交互。为了实现图形化的需求,我们需要借助图形库进行编程。
/
图形库是一个用于在屏幕上渲染图像的程序库。它通常提供一组经过优化的函数来执行渲染任务。由于C/C++语言可以适配非常广泛的设备,甚至有些设备不通过屏幕进行输入输出。即使使用屏幕的设备,也有非常大的差异性。因此,图形库并未包含在标准库当中。

2.安装easyx图形库。

图形库EasyX仅支持Visual Studio。因此,需要在你的电脑上安装Visual Studio。虽然EasyX可以支持从VC6.0(其后的版本包含在Visual Studio中发行),Visual Studio 2008到VS2019的各个版本。我建议尽量使用新一点的Visual Studio。

下载链接:https://easyx.cn/
从我们的easyx官网下载我们的库。

请添加图片描述

请添加图片描述

2.下载好程序以后打开安装程序程序会自动识别我们当前的vs的版本选择使用版本安装就可以。

3.语法相关

请添加图片描述

我们在使用easyx图形库的时候EasyX内部实现使用了C++语法。因此,若我们的代码中需要使用EasyX,源文件也需要是C++源文件。请不用担心,EasyX提供给我们使用的是一系列C/C++均支持的函数。除了略微区别,与C语言中的函数是一致的。

二.图形绘制

1.窗体创建和坐标的概念。

1.基本窗体的创建。

请添加图片描述

int flag=NULL是一个缺省的值。在函数调用的时候可以不去使用。
请添加图片描述

请添加图片描述

我们执行上面的代码发现程序一闪而过一个窗体这是因为程序的执行是非常快的我们打开了绘图窗体又马上关闭了绘图窗体。这里我们需要使用一个getchar函数去阻塞我们程序的执行保证我们的画布出现在我们的屏幕上。

请添加图片描述

2.坐标概念

坐标分为物理坐标和逻辑坐标,物理坐标是逻辑坐标的基础是不可以修改的。逻辑坐标是可以通过物理坐标修改的。

请添加图片描述

左上角是我们物理坐标的原点,从左到右x值依次增大,从上到下y值依次增大。
我们的逻辑坐标默认是和物理坐标相同,我们进行绘图操作的时候依据我们的逻辑坐标进行绘图。

3.改变逻辑坐标。

我们改变一个坐标第一步首先改变坐标原点,和我们的坐标的x,y轴的正方向。

请添加图片描述

请添加图片描述

关于x和y轴的正方向,默认没有修改是和物理坐标相同的这个时候我们可以通过setaspectration函数去改变我们的x,y轴的正方向指向。通过下面的操作我们把我们的逻辑坐标给修改成了:

请添加图片描述
请添加图片描述

2.设置图形颜色

1.设置描边颜色和描边样式。

请添加图片描述
请添加图片描述
请添加图片描述

1.第一个参数是我们的线的样式。
2.第二个参数是我们的线的像素大小。
3.第三个是用户自定义的线性样式,只有参数线的样式选择PS_USERSTYLE的时候才可以使用。
4.第四个参数用户自定义样式的数量。

2.设置图形填充颜色和填充样式

请添加图片描述
请添加图片描述

请添加图片描述

3.绘制图形只有填充样式或者绘制图形有填充和描边。

solid+图形 绘制函数名称表示只绘制填充颜色的图形。
fill+图形 绘制函数名称表示绘制填充和描边颜色的图形。

3.基本图形绘制。

0.改变背景颜色

easyx中默认背景色是黑色,在创建窗体之后就会默认粉刷一遍我们的窗体。只有当清除当前窗体的所有内容的时候我们才会使用背景颜色进行再一次的粉刷。

请添加图片描述
请添加图片描述
请添加图片描述

1.绘制点:

请添加图片描述
请添加图片描述

使我们的点更加容易观察我们写一个循环去生成随机生成1000个红色的点。
请添加图片描述

2.绘制线:

请添加图片描述
请添加图片描述

3.绘制圆:

请添加图片描述
请添加图片描述

4.绘制矩形:

请添加图片描述

请添加图片描述

5.绘制椭圆:

请添加图片描述
请添加图片描述

请添加图片描述

6.绘制圆角矩形:

请添加图片描述
请添加图片描述

7.绘制扇形:

请添加图片描述

在使用我们的扇形之前我们了解一下这个弧度制,角度转换为弧度。
定义一个PI作为我们圆周率的值。请添加图片描述

8.绘制圆弧:

请添加图片描述

请添加图片描述

三.多边形的绘制

1.绘制多边形基本方法

绘制多条线进行连接

请添加图片描述

请添加图片描述

2.进阶方法。

请添加图片描述

point类型是一个结构体类型,结构体成员变量为点的坐标x,y.
函数传参是传了一个结构体类型的数组。

请添加图片描述

3.绘制五边形

1.如何初始化五边形的五个点。

请添加图片描述

请添加图片描述

4.不封闭图形绘制

请添加图片描述

区别不会连接首位的顶点。
请添加图片描述

请添加图片描述

四:颜色模型的使用

1.RGB

基本概念:显示器的制造使用了人眼的“三原色”的原理。“三原色”原理不是出于物理原因,而是由于生理原因造成的。人的眼睛内有几种辨别颜色的锥形感光细胞,将三原色光以不同的比例复合后,对人的眼睛可以形成与各种频率的可见光等效的色觉。
///
在计算机应用当中,会将每种原色从弱到强分为256等分。0最弱,没有任何色彩为黑色。255为其原色最明亮的状态。
将不同比例的原色复合后,可以形成各种颜色。写一个颜色的色值时,惯例上使
用 RGB(红色的份数,绿色的份数,蓝色的份数) 。
请添加图片描述
请注意RGB是一个宏,函数预编译的时候就已经替换。
BYTE是一个什么类型呢?我们可以看一下。
RGB的返回值被用于设置颜色。请添加图片描述

请添加图片描述

请添加图片描述

总结我们可以通过RGB的颜色模型去使用更多的颜色丰富我们的绘图。

2.HSV

在这里插入图片描述
在这里插入图片描述
请添加图片描述

Hue色环的角度。
s表示饱和度。
V明度。

使用HSV模型实现一个彩虹背景:

请添加图片描述

使用hsv和RGB实现天空和彩虹

请添加图片描述

五:设置剪切区域

1.基本概念:

EasyX中并未直接提供创建区域函数,需要借用 Windows GDI 中提供的创建区区域函数。 Windows GDI 提
供了以下几个创建区域函数。

  1. CreateEllipticRgn 用于创建椭圆区域
  2. CreatePolygonRgn 用于创建多边形区域
  3. CreateRectRgn 用于创建矩形
  4. CreateRoundRectRgn 用于创建圆角矩形
    5.区域创建使用的坐标是基于物理坐标。

请添加图片描述

1.定义一个HRGN的一个变量用来存放创建好的剪切区域。
2.把rgn的值交给setcliPrgn函数用来设置剪切区域。
3.剪切区域不使用了把剪切区域设置为NULLsetcliPrgn(NULL);
4.不去使用定义的这个变量rgn就使用函数DeleteObject(rgn);把这个变量销毁。

请添加图片描述
请添加图片描述

2.组合区域:

1.组合就是把多个剪切区域以不同的方式关联在一起。
2.使用函数combinegen();
请添加图片描述
RGN_AND 创建两源区域的交集
RGN_COPY 创建和源区域1一样的区域
RGN_DIFF 创建两源区域的差集,源区域1减去源区域2
RGN_OR 创建两源区域的并集
RGN_XOR 创建两源区域的并集,且排除重叠部分

请添加图片描述

请添加图片描述

请添加图片描述
请添加图片描述

相关文章:

easyx图形库基础:1.基本概念的介绍+图形的绘制。

基本概念的介绍图形的绘制 一.基本概念的介绍。1.为什么要使用easyx图形库2.安装easyx图形库。3.语法相关 二.图形绘制1.窗体创建和坐标的概念。1.基本窗体的创建。2.坐标概念3.改变逻辑坐标。 2.设置图形颜色1.设置描边颜色和描边样式。2.设置图形填充颜色和填充样式3.绘制图形…...

zerotier requesting configuration

Q:zerotir无法获取physical ip A:路由器管理页面开启ipv6...

接口mock常用工具

在进行测试时,我们经常需要模拟接口数据,尤其是在前后端分离项目的开发中,在后端未完成开发时,前端拿不到后端的数据,就需要对后端返回的数据进行模拟。 如下一些工具,可以完成接口的mock。 Yapi 首先添…...

13-把矩阵看作是对系统的描述

探索矩阵乘法:更深刻的理解与应用视角 🧩🔍 引言 📖 在我们进一步探讨矩阵乘法之前,让我们从不同的角度来理解什么是矩阵,以及如何将矩阵视为一个系统。我们之前已经介绍了矩阵的基本概念和运算&#xff…...

Linux系统下安装Git软件

环境说明 Linux系统:CentOS 7.9 安装GCC等 JDK版本:jdk-8u202-linux-x64.tar.gz Maven版本:apache-maven-3.8.8-bin.tar.gz 在以上环境下安装Git(git-2.41.0.tar.gz)软件。 查看是否安装Git软件 查看Git版本&#…...

SpringBoot框架

一、SpringBoot概述 1. 简介 springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,…...

Chrome有些网站打不开,但是火狐可以打开

Chrome有些网站打不开,但是火狐可以打开 问题描述火狐成功界面谷歌报错界面局域网设置使用代理服务器访问成功 解决方案参考 问题描述 开了一个tizi,Chrome不能使用,火狐可以。之前装过插件Ghelper白嫖科学上网,那次之后好像浏览…...

Linux网络基础(中)

目录: 再谈“协议” HTTP协议 认识URL: urlnecode和urldecode HTTP协议格式: HTTP的方法: 简易HTTP服务器: 传输层 再谈端口号: 端口号范围划分: netstat: pidof&…...

【C++起飞之路】初级—— auto、范围for循环、宏函数和内联函数

auto、范围for、内联函数、宏函数和nullptr 一、auto — 类型推导的魔法(C 11)1、auto 是什么?2、工作原理3、优势4、限制和注意事项 二、范围for (C11)1、基本语法2、优势3、工作原理4、注意事项5、C11: 范围 for 循环的扩展: 三…...

开发工具Eclipse的使用之导入项目(import)

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Eclipse使用的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.导读 二.详细操作步骤 1.右击项…...

decimal类型在MySQL中的正确使用 (长度和小数点)

1. MySQL(decimal) 对应 Java(BigDecimal) 2. decimal(16,2) MySQL中类型的设置, 长度16, 保留2位小数 3. 如果长度小于14, 则会出现没小数位的情况...

Mongodb 安装

一、win10安装 服务端下载地址:Download MongoDB Community Server | MongoDB shell 工具下载地址:MongoDB Shell Download | MongoDB 服务端安装时选择custom,否则安装文件没有bin目录。 将安装后的文件中的bin目录加到环境变量。 设置…...

Java技术整理(5)—— Spring篇

Spring是一个全面的全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 1、Spring的核心组件 (1)数据层: JDBC、ORM、OXM、JMS、Transations (2&#x…...

07-MySQL-基础篇-函数

函数之字符串函数 前言函数字符串函数数值函数日期函数流程函数 前言 本篇来学习下MySQL中的函数–字符串函数。 函数 函数:是指一段可以直接被另一段程序调用的程序或代码MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。…...

不同路径 II——力扣63

class Solution {public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int n=...

NLP文本分类

NLP文本分类 落地实战五大利器&#xff01;_kaiyuan_sjtu的博客-CSDN博客https://zhuanlan.zhihu.com/p/432619164 https://github.com/alibaba/EasyNLP/blob/master/README.cn.md...

进程和线程的联系与区别

文章目录 一、进程和线程的联系二、进程和线程的区别 一、进程和线程的联系 操作系统中可以有很多进程&#xff0c;每个进程都有自己独立的资源&#xff1b;一个进程中可以有很多线程&#xff0c;系统中的每个线程都能独立调度&#xff0c;同一个进程中的各个线程共享内存/硬盘…...

分支和循环语句(2)(C语言)

目录 do...while()循环 do语句的语法 do语句的特点 do while循环中的break和continue 练习 goto语句 do...while()循环 do语句的语法 do 循环语句; while(表达式); do语句的特点 循环至少执行一次&#xff0c;使用的场景有限&#xff0c;所以不是经常使用。 #inc…...

Flutter: A RenderFlex overflowed by 42 pixels on the bottom.

Flutter&#xff1a;渲染活动底部上方溢出了42个像素 Flutter 控件超出异常&#xff1a;A RenderFlex overflowed by 42 pixels on the bottom. 解决方案 1.Scaffold内添加 resizeToAvoidBottomInset 属性&#xff0c;缺点是软键盘下面的控件被挡住 Scaffold( resizeToAvoidBot…...

第三章,矩阵,07-用初等变换求逆矩阵、矩阵的LU分解

第三章&#xff0c;矩阵&#xff0c;07-用初等变换求逆矩阵、矩阵的LU分解 一个基本的方法求 A − 1 B A^{-1}B A−1BLU分解例1&#xff0c;求矩阵A的LU分解&#xff1a;例12&#xff0c;LU分解解线性方程组&#xff1a; 玩转线性代数(19)初等矩阵与初等变换的相关应用的笔记&a…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...