Easyx图形库趣味编程note3,颜色模型

news2024/12/23 11:07:22

EasyX的文档中,不只有用大写字母的形式可绘制出的颜色,它支持更加缤纷多彩的颜色供我们使用。

RGB颜色模型

相信大家都知道三原色,小时候我们趴在电视机前,就可以很明显的发现电视上的色彩是由红绿蓝三种色彩构成,有这三种颜色可以构成许多种别的颜色

红绿蓝每种颜色的色值从最明亮到最暗表示为0~256

下图为专业讲解

LED完全打开,就是最鲜明的红色,当色值为0时,即为黑色

借助photoshop来说

这就是三原色表示法,通常在利用RGB表示一种颜色时前边要加上‘#’

当我们将红色的色值调为零,即R等于0

可见当前颜色为黑色,即上边所说LED熄灭。其他颜色也一样。

EasyX中提供了一个宏函数

COLORREF RGB(BYTE byRed,BYTE byGreen,BYTE byBlue);

传入不同的数值,就可以得到混合后的颜色。

这里的BYTE是Easyx自定义的,其实他就是unsidned char。取值范围0~255之间。

COLORREF

只要给他每种颜色不同的分量,就可以绘制出多种多样的色彩。

实在不知道选择什么颜色可以到这个网页看一看:RGB颜色


现在利用RGB颜色模型,将创建的窗体更改为青蓝色

#define _CRT_SECURE_NO_WARNINGS
#include <easyx.h>
#include <stdio.h>

int main()
{
	initgraph(800, 600);
	setorigin(400, 300);
	setaspectratio(1, -1);
	setbkcolor(RGB(187, 255, 255));
	cleardevice();

	getchar();
	closegraph();
	return 0;
}

运行后如图所示


HSV(HSB)颜色模型

设置一个等边三角形,三原色分别放置在三角形的三个顶点上,画出三角形的外接圆,圆上的每一个点都距离其两边的三原色的两种有一定的距离,根据距离不同来设置其两种原色的比例。

如果将圆上的各点按照三原色的比例增减,会形成一个色环

例如在photoshop中,第一个H就是色相Hue,红色为360°也就是0°,蓝色为240°,绿色为120°,通过选择不同的色相可以选出不同的颜色。

HSV颜色模型还提供了另外两个参数控制颜色的鲜艳程度和明暗程度

饱和度Saturation

阴暗程度Value(Brightness)

饱和度逐渐降低,颜色就越来越浅,从浅绿直到变成白色。

明度逐渐降低,颜色会越来越深,从深绿最后变为黑色。

将这三个参数结合

圆锥上边的圆上不同的点代表不同色相,红色为0°,绿色120°,蓝色240°,不同的色相可以选择出不同的颜色。

在圆面上,从圆心向外饱和度逐渐增大,圆面边缘饱和度最大,100%,从圆心向下,明度逐渐减小,圆面上明度最高,100%,圆锥处为零。

这就是HSB颜色模型。


然而显示屏是使用三原色混合的原理制造的,不能直接用HSV模型

EasyX提供了一个函数HSVtoRGB

COLORREF HSVtoRGB(float H,Float S,float V);

第一个参数为色相,取值范围为0~360°,第二个参数为饱和度,范围在0~1之间,第三个参数为明度,范围在0~1之间,返回值是对应的RGB颜色。

利用HSV选出一个颜色

绘制出该颜色的窗体

运行后成功绘制。

绘制彩虹

        具体思路如下,依次绘制圆形(超出范围的不管就可以了),圆的色相逐渐变化,明度和饱和度为最高。不断地绘制覆盖绘制覆盖即可.

代码如下

#define _CRT_SECURE_NO_WARNINGS
#include <easyx.h>
#include <stdio.h>

#define Pai 3.14
int main()
{
	initgraph(800, 600);//圆心坐标为
	setbkcolor(WHITE);
	cleardevice();
	int r = 400;
	for (int i = 0; i < 360;i += 1)
	{

		setfillcolor(HSVtoRGB(i,1,1));
		solidcircle(400, 600, r);
		r -= 1;
	}
	getchar();
	closegraph();
	return 0;
}

运行后如图

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

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

相关文章

javascript: Sorting Algorithms

// Sorting Algorithms int JavaScript https://www.geeksforgeeks.org/sorting-algorithms/ /** * file Sort.js * 1. Bubble Sort冒泡排序法 * param arry * param nszie */ function BubbleSort(arry, nszie) {var i, j, temp;var swapped;for (i 0; i < nszie - 1; i)…

云原生微服务 第六章 Spring Cloud Netflix Eureka集成OpenFeign组件,实现微服务的远程调用、负载均衡

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 文章目录 系列文章目录前言1、OpenFeign的实现…

httpserver 下载服务器demo 以及libevent版本的 httpserver

实现效果如下&#xff1a; 图片可以直接显示 cpp h 这些可以直接显示 其他的 则是提示是否要下载 单线程 还有bug 代码如下 先放上来 #include "httpserver.h" #include "stdio.h" #include <stdlib.h> #include <arpa/inet.h> #include…

SpringBoot中使用拦截器

拦截器属于MVC中的内容 SpringBoot项目,引入web依赖即可 需要访问的控制器 拦截器第一步实现HandlerInterceptor接口 第二步实现WebMvcConfigurer接口,并重写addInterCeptors()方法,将自定义的拦截器注册 也就是说这里add进去拦截的请求,才会进入到prehandle方法,这里放行的请…

嵌入式Linux应用开发-驱动大全-同步与互斥①

嵌入式Linux应用开发-驱动大全-同步与互斥① 第一章 同步与互斥①1.1 内联汇编1.1.1 C语言实现加法1.1.2 使用汇编函数实现加法1.1.3 内联汇编语法1.1.4 编写内联汇编实现加法1.1.5 earlyclobber的例子 1.2 同步与互斥的失败例子1.2.1 失败例子11.2.2 失败例子21.2.3 失败例子3…

AMD GPU 内核驱动分析(三)-dma-fence 同步工作模型

在Linux Kernel 的AMDGPU驱动实现中&#xff0c;dma-fence扮演着重要角色&#xff0c;AMDGPU的Render/解码操作可能涉及到多个方面同时引用buffer的情况&#xff0c;以渲染/视频解码场景为例&#xff0c;应用将渲染/解码命令写入和GPU共享的BUFFER之后&#xff0c;需要将任务提…

记录UNIAPP打包苹果iOS·APP

用到生成的四个文件:1-1.CSR证书文件、2-2.CER证书文件、3-3.PP文件【证书Profiles文件】、4-4.P12文件【证书私钥】 1. 生成CSR证书文件: 2. 操作苹果后台:Sign In - Applehttps://developer.apple.com/account/resources/certificates/list

高效的开发流程搭建

目录 1. 搭建 AI codebase 环境kaggle的服务器1. 搭建 AI codebase 环境 python 、torch 以及 cuda版本,对AI的影响最大。不同的版本,可能最终计算出的结果会有区别。 硬盘:PCIE转SSD的卡槽,, GPU: 软件源: Anaconda: 一定要放到固态硬盘上。 VS code 的 debug功能…

嵌入式Linux应用开发-驱动大全-同步与互斥④

嵌入式Linux应用开发-驱动大全-同步与互斥④ 第一章 同步与互斥④1.5 自旋锁spinlock的实现1.5.1 自旋锁的内核结构体1.5.2 spinlock在UP系统中的实现1.5.3 spinlock在SMP系统中的实现 1.6 信号量semaphore的实现1.6.1 semaphore的内核结构体1.6.2 down函数的实现1.6.3 up函数的…

关于将对象转成JSON格式的一些问题

1.问题现象&#xff1a; 在ssm项目中&#xff0c;一个controller返回Msg对象&#xff08;自定义Javabean对象&#xff09;&#xff0c;然后利用SpringMVC的ResponseBody注解自动将Msg对象转化成JSON格式&#xff0c;返回给客户端&#xff0c;但是客户端接收到的json字符串只有…

「专题速递」数字人直播带货、传统行业数字化升级、远程协作中的低延时视频、地产物业中的通讯终端...

音视频技术作为企业数字化转型的核心要素之一&#xff0c;已在各行各业展现出广泛的应用和卓越的价值。实时通信、社交互动、高清视频等技术不仅令传统行业焕发新生&#xff0c;还为其在生产、管理、服务提供与维护等各个领域带来了巨大的助力&#xff0c;实现了生产效率和服务…

打字速度测试,生成您的打字速度证书?

趁着十一国庆之际&#xff0c;开发完成了打字侠的速度测试功能。我自己的打字速度约为56字/分钟&#xff0c;算是盲打中速度比较快的。下面是我的打字荣誉证书&#xff0c;欢迎大家免费测试自己的打字速度。 你也想来测试一下自己的打字速度吗&#xff1f; 打字侠速度测试地址…

2023最新简易ChatGPT3.5小程序全开源源码+全新UI首发+实测可用可二开(带部署教程)

源码简介&#xff1a; 2023最新简易ChatGPT3.5小程序全开源源码全新UI首发&#xff0c;实测可以用&#xff0c;而且可以二次开发。这个是最新ChatGPT智能AI机器人微信小程序源码&#xff0c;同时也带部署教程。 这个全新版本的小界面设计相当漂亮&#xff0c;简单大方&#x…

「算法小记」-1:Ackermann函数/阿克曼函数的一点思考解法【递归/非递归/堆栈方法】(C++ )

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

Java架构师角度看架构

目录 1 导学1.1 技术提升依然突破不了职业的瓶颈1.2 技术提升可薪资依然涨不上去1.3 学了架构课程依然觉得自己成长很慢 2 架构的基本认识2.1 什么是架构2.2 为什么要做架构设计 3 深入理解和认识架构。3.1 架构定义的行为。3.2 架构关注系统的主要元素3.3 平衡关注点3.4 架构会…

站长如何能够做到网站的全方位防护呢?

随着互联网的急剧崛起&#xff0c;网站已成为企业塑造品牌形象和吸引潜在客户的首要渠道之一。然而&#xff0c;伴随着这种便捷性&#xff0c;网站安全问题也愈发凸显。DDOS&#xff08;分布式拒绝服务攻击&#xff09;和CC&#xff08;恶意请求攻击&#xff09;攻击成为了黑客…

ROS基础

E: Unable to locate package ros-kinetic-turtle-tf ROS Kinetic 学习笔记 (古月居) https://www.bilibili.com/video/BV1hc411n7N7/ 一、认识ROS 大纲 ROS的总体设计 系统实现 三个层次 1 主要是话题、服务通信模型的实现&#xff1b; 话题&#xff1a; RPC介绍&#…

顾樵 量子力学I 导读(1)

波函数与薛定谔方程 薛定谔方程的获得 经典电磁波理论与德布罗意关系 波函数的性质 波函数是平方可积函数&#xff08;归一化条件&#xff09;波函数和波函数的导数是连续的波函数的单值的波函数在势场奇点以外的地方连续力学量的平均值与期待值 粒子动量的期望值Ehrenfests th…

采用python中的opencv2的库来运用机器视觉移动物体

一. 此次我们来利用opencv2来进行机器视觉的学习 1. 首先我们先来进行一个小的案例的实现. 这次我们是将会进行一个小的矩形手势的移动. import cv2 from cvzone.HandTrackingModule import HandDetectorcap cv2.VideoCapture(0) # cap.set(3, 1280) # cap.set(4, 720) col…

1.1 数据库系统概述

思维导图&#xff1a; 前言&#xff1a; **数据库前言笔记&#xff1a;** 1. **数据库的价值** - 数据管理的高效工具 - 计算机科学的关键分支 2. **信息资源的重要性** - 现代企业或组织的生存和发展关键 - 建立有效的信息系统至关重要 3. **数据库的应用范围**…