C语言easyx颜色模块+案例

news2024/11/27 16:51:44

c语言exsyx学习

    • 颜色模型
      • rgb
      • hsv
      • hsv转换为rgb
      • 案例 绘制彩虹窗体
      • 案例 绘制天空和彩虹画面

颜色模型

1.1 什么是RGB颜色模型

不知道你有没有近距离看过各种电子显示屏。若非常近距离的观察电子显示屏,可以发现屏幕居然是由

一个一个的红色、绿色、蓝色的小点组成。

红色的字母R(Red),为一系列红色的点组成。
绿色的字母G(Green),为一系列绿色的点组成。
蓝色的字母B(Blue),为一系列蓝色的点组成。

rgb

用 RGB(红色的份数,绿色的份数,蓝色的份数) 。

例如

134份红色 + 172份绿色 + 242份蓝色 = 天空蓝,

RGB(134, 172, 242)

使用十六进制份数表示色值时,常常在前面加一个#号

 RGB(134, 172, 242)134为十六进制的86172为十六进制的ac,242为十六进制的f2。色值可以
写成 #86acf2 。

把背景设置天蓝色

#include <stdio.h>
#include <easyx.h>
int main(void)
{
    initgraph(800, 600);
    // 设置背景颜色为RGB(134, 172, 242)
    setbkcolor(RGB(134, 172, 242));
    cleardevice();
    getchar();
    closegraph();
    return 0;
}

hsv

是一个色环 0 到120 红色到绿色过渡 120到240 是绿色到蓝色过渡

240到360 是蓝色到红色过渡

其次自每个角度下 存在着饱和度和亮度

饱和度就是这个色彩的鲜艳 0%为白色 不饱和 100%最饱和

亮度 就是色彩的明暗 0%位黑色最暗 100%最亮

hsv转换为rgb

因为电脑不支持hsv 所以需要把hsv 转为rgb

COLORREF HSVtoRGB(
    float H,//Hue(色相) 分量,0 <= H < 360
    float S,//Saturation(饱和度) 分量,0 <= S <= 1
    float V//Value(明度) 分量,0 <= V <= 1
);
// 设置背景颜色为HSV(219°, 45%, 95%)
setbkcolor(HSVtoRGB(219, 0.45, 0.95));

案例 绘制彩虹窗体

#include <easyx.h>
#include <stdio.h>
int main() {
	//创建画布
	initgraph(800, 600);
	
	//把画布分成600份  每份就是一个线条 线条的颜色根据hsv的角度变换
	//,每次变动的角度
	float delt = 360.0 / 600.0;
	float h=0;
	//600个线条
	for (int i = 0; i < 600; i++)
	{
		//设置颜色
		setlinecolor(HSVtoRGB(h, 1, 1));

		//在画布上绘制线条
		line(0,i,800,i);
		//变换角度
		h += delt;
	}

	//关闭前拦截一下 
	getchar();
	//关闭画布
	closegraph();
	return 0;
}

方案二

#include <easyx.h>
#include <stdio.h>
int main() {
	//创建画布
	initgraph(800, 600);
	
	//把画布分成600份  每份就是一个线条 线条的颜色根据hsv的角度变换

	//600个线条
	for (int i = 0; i < 600; i++)
	{
		//,每次变动的角度
		float delt = 360.0 / 600.0;

		//设置颜色
		setlinecolor(HSVtoRGB(i * delt, 1, 1));

		//在画布上绘制线条
		line(0,i,800,i);
	}

	//关闭前拦截一下 
	getchar();
	//关闭画布
	closegraph();
	return 0;
}

在这里插入图片描述

案例 绘制天空和彩虹画面

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

int main() {
	//创建画布
	initgraph(800, 600);
	
	//把画布分成600份  每份就是一个线条 线条的颜色根据hsv的角度变换

	//600个线条
	for (int i = 0; i < 600; i++)
	{
		//,每次变动的饱和度
		float delt = 1.0 / 600.0;

		//设置颜色
		setlinecolor(HSVtoRGB(240, 1- i * delt, 1));

		//在画布上绘制线条
		line(0,i,800,i);

	}

	//绘制彩虹
	//获得圆心
	//变换的色彩度数
	float ch = 360.0 / 100.0;
	for (int i = 0; i < 100; i++)
	{
		//绘制线条样式
		setlinecolor(HSVtoRGB(ch*i,1,1));
		circle(400, 600, 300-i);
	}

	//关闭前拦截一下 
	getchar();
	//关闭画布
	closegraph();
	return 0;
}


在这里插入图片描述

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

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

相关文章

毕业设计 - SSM中药店商城系统(含源码+论文)

文章目录1 项目简介2 实现效果2.1 界面展示3 设计方案3.1 概述3.2 系统流程3.3 系统结构设计4 项目获取1 项目简介 Hi&#xff0c;各位同学好呀&#xff0c;这里是M学姐&#xff01; 今天向大家分享一个今年(2022)最新完成的毕业设计项目作品&#xff0c;【基于SSM的中药店商…

半年销售100万辆 关注比亚迪后300万时代

11月16日&#xff0c;比亚迪第300万辆新能源汽车下线发布在比亚迪全球总部举行&#xff0c;标志着比亚迪成为首个达成这一里程碑的中国品牌。从“第1辆新能源汽车到第100万辆新能源汽车”用时13年、从“100万到200万”用时1年&#xff0c;从“200万到300万”仅用时半年&#xf…

HTML5——周技能检测——菜单编辑——2022年11月22日(考完)

HTML5——周技能检测——菜单编辑——2022年11月22日&#xff08;考完&#xff09; 一、语言和环境 1. 实现语言&#xff1a;HTML5。 2. 开发环境&#xff1a;VScode。 二、要求 1、完成下列菜单显示效果。 2、添加【:hover】选择器&#xff0c;鼠标悬停在文字上方时文字…

全面详解云计算

【导读】本文从企业IT建设发展痛点解析入手,从云计算的标准定义、云平台分类、云计算优劣势分析,到企业规模、业务类型与云平台适用以及企业上云流程简析,全面详解云计算,结合作者的思考和观点,为读者认识云计算提供一个全景式的概貌。 前言 大数据、人工智能、云计算可…

C++ 手动实现双线链表(作业版)

双向链表&#xff0c;并实现增删查改等功能 首先定义节点类&#xff0c;类成员包含当前节点的值&#xff0c; 指向下一个节点的指针和指向上一个节点的指针 //节点定义 template <typename T> class Node { public:Node<T>* prior;T value;Node<T>* next;N…

Python对Excel的读取

在python自动化中&#xff0c;经常会遇到对数据文件的操作&#xff0c;比如添加多名员工&#xff0c;但是直接将员工数据写在python文件中&#xff0c;不但工作量大&#xff0c;要是以后再次遇到类似批量数据操作还会写在python文件中吗&#xff1f; 应对这一问题&#xff0c;可…

【OpenDDS开发指南V3.20】第七章:运行时配置

配置方式 OpenDDS 包括一个基于文件的配置框架,用于配置全局选项以及与特定发布者和订阅者相关的选项,例如发现和传输配置。 OpenDDS 还允许通过命令行对有限数量的选项和配置 API 进行配置。 本章总结了 OpenDDS 支持的配置选项。 OpenDDS 配置涉及三个主要领域: 通用配…

QT 实现简单的天气 哈哈

前 言 前段时间开始接触QT&#xff0c;想着没事学习一下QT&#xff0c;这个小列子主要是用到了QJSON 和QNetworkAccessManager 来实现&#xff0c;QJSON 主要是用来json格式文件的解析&#xff0c;QNetworkAccessManager 主要来实现网络请求。 界面展示 界面上看非常low&…

解决java: 程序包org.springframework.boot不存在的解决方法

问题描述 最近IDEA抽风了&#xff0c;不管是新建SpringBoot工程&#xff0c;还是导入项目。 IDEA代码里面都会飘红~ Build项目时&#xff0c;会提示错误&#xff1a;错误:(3, 32) java: 程序包org.springframework.boot不存在 后来找到一个靠谱的解决方案&#xff0c;建议使…

Java如何安装https证书

Java为什么需要证书&#xff1f; 出于安全的考虑&#xff0c;很多网站都使用https 协议&#xff0c;而要访问一个https 的站点则需要一个证书文件&#xff0c;这些证书文件由CA (Certificate Authority) 颁布&#xff0c; 各站点将这些认证过的证书放在各自的服务器上&#xf…

深度解析:为何在 SwiftUI 视图的 init 初始化器里无法更改 @State 的值?

问题现象 如下代码所示,我们希望用 “hopy” 初始化 ContentView 中的 secret 属性,但是最终 ContentView 显示时, secret 的值仍旧为默认值 “none” ! 为什么会出现这种情况呢? 其实答案就在 @State 包装器属性内部实现机制上,它比表面看起来要复杂那么一丢丢。 在本…

第十四届校模拟赛第一期(一)

“须知少时凌云志&#xff0c;自许人间第一流” 鄙人11月八号有幸参加学校校选拔赛&#xff0c;题型为5道填空题&#xff0c;5道编程题&#xff0c;总时间为4小时。奈何能力有限&#xff0c;只完成了5道填空和3道编程大题&#xff0c;现进行自省自纠&#xff0c;分享学习&#…

Unity | Cinemachine 2D 设置边界及错误记录

1 背景介绍 在使用大地图的项目中&#xff0c;通常需要摄像机跟随玩家移动&#xff0c;而且需要根据地图尺寸限制摄像机的边界 借助 Cinemachine 及其扩展组件 CinemachineConfiner 可以很方便的实现该功能&#xff0c;但这次遇见一个问题&#xff1a;运行时&#xff0c;当摄…

世界杯今日胜负预测(阿根廷VS沙特阿拉伯,丹麦VS突尼斯)

首先是今天开局的两场 阿根廷VS沙特阿拉伯————阿根廷胜 理由&#xff1a; 1、国家队世界男足排名第三 2、在今年阿根廷的近期战绩 3、经常关注世界杯的粉丝观点 4、抖音平台预测数据&#xff0c;截止时间14:46 丹麦VS突尼斯————丹麦胜 理由&#xff1a; 1、丹麦国…

CPT-CY3/CY5/CY7/CY7.5/花菁染料CY3/Y5/CY7/CY7.5/抗Trop-2 IgG抗体偶联顺铂的制备

小编今天给大家分享了CPT-CY3/CY5/CY7/CY7.5/花菁染料CY3/Y5/CY7/CY7.5/抗Trop-2 IgG抗体偶联顺铂的制备方法&#xff0c;一起来看看。 抗Trop-2 IgG抗体偶联顺铂的制备&#xff1a; 转染Trop-2质粒至293F细胞,利用Protein A亲和柱纯化,获得人源抗Trop-2 IgG抗体.酶联免疫吸附…

Qt Quick-PySide2使用qrc文件

Qt Quick中PySide2使用qrc文件、Controls2设置全局样式、VSCode任务。 使用步骤 创建一个 resource.qrc 文件 <RCC><qresource prefix"/"><file>qtquickcontrols2.conf</file><file>images/images.png</file></qresource&…

反射、类的加载时机、类加载过程的详细流程图

目录 一、反射 1、静态加载 2、动态加载 二、类加载的时机 三、类加载的流程图 四、类加载的三个阶段的详细解释 1.1 加载 1.2 连接 1、验证 2、准备 3、解析 1.3 初始化 一、反射 反射机制是java实现动态语言的关键&#xff0c;也就是哦天哪故宫反射实现类动态加载…

Linux安装Oracle19c(极简版)

Oracle下载oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpmoracle-database-ee-19c-1.0-1.x86_64.rpmOracle安装 cd /opt yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm 环境变…

RHCE学习 --- 第八次作业(ansible)

RHCE学习 — 第八次作业&#xff08;ansible&#xff09; \ 一、基础环境&#xff1a; 采用一台centos7的主机为控制节点master&#xff0c;两台centos8的主机为受控节点&#xff08;node01&#xff0c;node02&#xff09; 三台主机均安装ansible并可以使用 三台主机有IP地…

My Sixty-seventh Page - 0-1背包问题理论 - By Nicolas

小尼在这里跟大家说明一下0-1背包问题的理论&#xff0c;首先我们需要认识一下什么是背包问题。小尼在这里拉一下代码随想录的代码&#xff0c;有兴趣的小伙伴也想把背包问题学好&#xff0c;可以去代码随想录看一看背包问题的讲解&#xff0c;也可以去B站看一看代码随想录对背…