真彩色/RGB是什么?

定义

真彩色(True Color) 是一种色彩表示方式,它通常指的是能够表达和显示256种色彩级别颜色组合

真彩色通常表示为 24 色彩深度,也称为“真彩色模式”。

24 位色

在真彩色中,颜色通过三种基础颜色组合来表达:红色(Red)、绿色(Green)和蓝色(Blue),统称为RGB模型。

其中,R、G、B各占 8 比特位的大小,故真彩色通常表示为 24-bit

由于二进制下一个 0 或 1 的存储需要的空间为 1 bit

于是我们不难得知,每个色彩深度的取值为(写成二进制) 00000000 ~ 11111111

即十进制下的 0 ~ 255

所以每个基础颜色的取值有 256 种可能(取值包括 0)

由这三种基础颜色一共能组成的色彩类型为:256 * 256 * 256 == 16,777,216

彩虹渐变色

彩虹色渐变是从 -> -> -> 绿 -> -> -> ->

既然真彩色能表现如此多的颜色,那么其中自然也包括各种彩虹渐变色

具体体现在RGB数值的变化为:

1. 红色到黄色

红色分量保持 255,绿色分量逐渐从 0 变到 255,蓝色分量始终是 0。

r:255        g:0~255        b:0

2. 黄色到绿色

红色分量从 255 变到 0,绿色分量保持 255,蓝色分量始终是 0。

r:255~0        g:255        b:0

3. 绿色到青色

红色分量始终是 0,绿色分量保持 255,蓝色分量从 0 变到 255。

r:0        g:255        b:0~255

4. 青色到蓝色

红色分量始终是 0,绿色分量从 255 变到 0,蓝色分量保持 255。

r:0        g:255~0        b:255

5. 蓝色到紫色

红色分量从 0 变到 255,绿色分量始终是 0,蓝色分量保持 255。

r:0~255        g:0        b:255

6. 紫色到红色

红色分量保持 255,绿色分量始终是 0,蓝色分量从 255 变到 0。

r:255        g:0        b:255~0

实例

观察R、G、B值的变化:

遍历所有24bit真彩色

运行以下程序后,终端里会开始遍历显示一共 16,777,216 种颜色(前提是终端支持ANSI转义码)

至于 ANSI 转义码是什么,详见我即将发布的博客。

#include<stdio.h>
#include<Windows.h>
int main()
{
	int r = 0, g = 0, b = 0;
	printf("\n\n\n\n");
	printf("\t\t r\t g\t b\n");
	for (r = 0; r < 255; r++)
	{
		for (; g < 255 && r % 2 == 1; g++)
		{
			for (; b < 255 && g % 2 == 1; b++)
			{
				printf("\033[?25l\033[38;2;%d;%d;%dmBLZ\033[0m\033[?25l\t\033[48;2;%d;%d;%dm    \033[0m\033[?25l\t%3d\t%3d\t%3d\n\033[1A", r, g, b, r, g, b, r, g, b);
				//Sleep(1);
			}
			for (; b > 0 && g % 2 == 0; b--)
			{
				printf("\033[?25l\033[38;2;%d;%d;%dmBLZ\033[0m\033[?25l\t\033[48;2;%d;%d;%dm    \033[0m\033[?25l\t%3d\t%3d\t%3d\n\033[1A", r, g, b, r, g, b, r, g, b);
				//Sleep(1);
			}
		}
		for (; g > 0 && r % 2 == 0; g--)
		{
			for (; b < 255 && g % 2 == 1; b++)
			{
				printf("\033[?25l\033[38;2;%d;%d;%dmBLZ\033[0m\033[?25l\t\033[48;2;%d;%d;%dm    \033[0m\033[?25l\t%3d\t%3d\t%3d\n\033[1A", r, g, b, r, g, b, r, g, b);
				//Sleep(1);
			}
			for (; b > 0 && g % 2 == 0; b--)
			{
				printf("\033[?25l\033[38;2;%d;%d;%dmBLZ\033[0m\033[?25l\t\033[48;2;%d;%d;%dm    \033[0m\033[?25l\t%3d\t%3d\t%3d\n\033[1A", r, g, b, r, g, b, r, g, b);
				//Sleep(1);
			}
		}
	}

	return 0;
}

由于完全遍历的时间太长,这里只放出遍历部分颜色的演示效果

终端最大遍历速度:

总结

真彩色,实际上就是一种颜色的表示方法,R、G、B分别是它的三个参数,这些理解起来也没那么难,对吧?

后续不累子也将发表一篇使用 C 语言实现打印彩虹渐变色有关的博客

那么既然你都看到了这,点个赞收藏再关注一下也没那么难......对吧?

qwq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值