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

news2024/11/26 2:37:53

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

  • 一.基本概念的介绍。
    • 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 创建两源区域的并集,且排除重叠部分

请添加图片描述

请添加图片描述

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

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

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

相关文章

【第二阶段】kotlin的函数类型作为返回类型

fun main() {//调用,返回的是一个匿名类型,所以info就是一个匿名函数val infoshow("",0)//info接受的返回值为匿名类型,此时info就是一个匿名函数println(info("kotlin",20)) }//返回类型为一个匿名函数的返回类型fun show(name:Str…

编程工具合集

须知: 本博文只是为了记录程序员在编程中所用到的编程工具以及效率软件,如有侵权,请告知! VSCode 英文官网:https://code.visualstudio.com/ 中文官网:http://vscode.p2hp.com/ win下载链接:VS…

ModaHub魔搭社区:AI时代连接硬件和上层应用的中间层基础设施。

从类比的角度理解AI Infra:AI时代连接硬件和上层应用的中间层基础设施。传统本地部署时代,三大基础软件(数据库、操作系统、中间件)实现控制硬件交互、存储管理数据、网络通信调度等共性功能,抽象并隔绝底层硬件系统的复杂性,让上层应用开发者能够专注于业务逻辑和应用功…

Kotlin入门:变量和函数——02

目录 一、Kotlin 基本数据类型 ​编辑 二、变量 val 关键字: var 关键字: 类型推断: 可空类型: 三、函数 基本函数语法: 单表达式函数: 默认参数值: 命名参数: 一、Kotlin 基本数据类型 Kotlin 的基本数…

CCLINK IE 转MODBUS-RTU网关modbusrtu与485区别

远创智控YC-CCLKIE-RTU。这款产品的主要功能是将各种MODBUS-RTU、RS485、RS232设备接入到CCLINK IE FIELD BASIC网络中。 那么,这款通讯网关又有哪些特点呢?首先,它能够连接到CCLINK IE FIELD BASIC总线中作为从站使用,同时也能连…

sqlyog下载和卸载的最新详细过程,超多图快速安装或者卸载

目录 1.SQLyog的介绍2.sqlyog的下载和安装3.sqlyog的卸载 ✨ 原创不易,还希望各位大佬支持一下! 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论&#xff0c…

7.5.tensorRT高级(2)-RAII接口模式下的生产者消费者多batch实现

目录 前言1. RAII接口模式封装生产者消费者2. 问答环节总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-RAI…

Netty核心源码解析(一)

Netty是什么? Netty是Jboss提供的一个Java 开源框架,主要针对TCP协议的高并发场景Netty本质是对Java NIO做了封装的网络通信框架,主要作用是Java NIO基本接口的封装,提供了网络通信中线程同步,编解码,粘包拆…

小龟带你敲排序之冒泡排序

冒泡排序 一. 定义二.题目三. 思路分析(图文结合)四. 代码演示 一. 定义 冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元…

Kettle系列(一)下载安装与基础配置

Kettle系列(一)下载安装与基础配置 说明一、下载二、目录结构三、基础配置(1)环境变量(2)kettle配置 四、连接mysql8五、连接其他数据库六、总结 说明 更新时间:2023/08/13 17:47 本文记录了wi…

openGauss学习笔记-38 openGauss 高级数据管理-游标

文章目录 openGauss学习笔记-38 openGauss 高级数据管理-游标38.1 语法格式38.2 参数说明38.3 示例 openGauss学习笔记-38 openGauss 高级数据管理-游标 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游…

【Pytroch】基于决策树算法的数据分类预测(Excel可直接替换数据)

【Pytroch】基于决策树算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 决策树是一种常用的机器学习算法,用于分类和回归任务。它通过树状结构表示数据的决策…

Opencv4基于C++的 实时人脸检测

文章目录: 一:环境配置搭建(VS2015Opencv4.6) 二:下资源文件 第一种:本地生成 第二种 直接下载 三:代码展示 窗口布局 main.cpp test.h test.cpp 效果图◕‿◕✌✌✌:opencv人脸识别效果图(请叫我真爱粉) 一&…

运算器组成实验

1.实验目的及要求 实验目的 1、熟悉双端口通用寄存器组的读写操作。 2、熟悉运算器的数据传送通路。 3、验证运算器74LS181的算术逻辑功能。 4、按给定数据,完成指定的算术、逻辑运算。 实验要求 1、做好实验预习。掌握运算器的数据传送通路和ALU的功能特性&…

7.3.tensorRT高级(2)-future、promise、condition_variable

目录 前言1. 生产者消费者模式2. 问答环节总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-future、promise…

【算法——双指针】LeetCode 1089 复写零

千万不要被这道题标注着“简单”迷惑了,实际上需要注意的细节很多。 题目描述: 解题思路: 正序遍历,确定结果数组的最后一个元素所在的位置;知道最后一个元素的位置后倒序进行填充。 先找到最后一个需要复写的数 先…

C++ 泛型编程:函数模板

文章目录 前言一、什么是泛型编程二、函数模板三、函数模板的使用四、多参数函数模板五,示例代码:总结 前言 当需要编写通用的代码以处理不同类型的数据时,C 中的函数模板是一个很有用的工具。函数模板允许我们编写一个通用的函数定义&#…

php从静态资源到动态内容

1、从HTML到PHP demo.php:后缀由html直接改为php,实际上当前页面已经变成了动态的php应用程序脚本 demo.php: 允许通过<?php ... ?>标签,添加php代码到当前脚本中 php标签内部代码由php.exe解释, php标签之外的代码原样输出,仍由web服务器解析 <!DOCTYPE html>…

Qt中将信号封装在一个继承类中的方法

QLabel标签类对应的信号如下&#xff1a; Qt中标签是没有双击&#xff08;double Click&#xff09;这个信号的&#xff1b; 需求一&#xff1a;若想双击标签使其能够改变标签中文字的内容&#xff0c;那么就需要自定义一个“双击”信号&#xff0c;并将其封装在QLabel类的派生…

使用vscode写vue文件代码有时不提示

背景&#xff1a; 安装了volar插件&#xff0c;但是在vue文件中导入js文件代码不提示&#xff0c;准确来说是有时提示有时不提示 解决方案&#xff1a; 插件冲突&#xff0c;卸载 JavaScript (ES6) code snippets 插件&#xff0c;这个插件在vue文件中适配不是很好。 很有可能…