色彩

Daniel Shiffman(丹尼尔老师)

在数字世界里,当我们想谈论一种颜色时,精度是必需的,颜色被定义为一系列数字。让我们从最简单的情况开始

0表示黑色,255表示白色。在0到255之间,每隔50、87、162、209等数字就是一个从黑到白的灰色阴影。

0-255在你看来是任意的吗?

给定形状的颜色需要存储在计算机的内存中。这个内存只是一个很长的0和1的序列(一堆开关),每个开关都有一个位,8个开关加起来就是一个字节。

想象一下,如果我们有8位(一个字节)的序列,我们可以用多少种方式配置这些交换机?

答案是(二进制只有0和1,所以每一位有2种可能性)2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 256种可能性,

或者0到255之间的一系列数字。我们将使用8位颜色作为灰度范围,24位用于全色(红色、绿色和蓝色分量各8位)。

通过在绘制之前添加stroke()和fill()函数,我们可以设置任何给定形状的颜色。还有一个函数background(),它为窗口设置背景色。这里有一个例子。

size(200, 200);
background(255);    // 设置背景颜色为白色
stroke(0);          // 设置边框颜色为黑色
fill(150);          // 设置填充颜色为灰色
rect(50,50,75,100); // 绘制矩形

使用noStroke()和noFill()函数可以消除边框或填充。

stroke(0) 表示黑色,而不是消除边框。另外,记住不要用noStroke()和noFill()同时消除,看不到图形!

此外,如果我们绘制两个形状,处理将始终使用最近指定的笔划和填充,代码是从上到下读取代码。

background(150);stroke(0);
line(0,0,100,100);stroke(255);
noFill();
rect(25,25,50,50);

RGB颜色

还记得手指画吗?通过混合三种“原色”,可以产生任何颜色。把所有的颜色混合在一起形成了一种浑浊的棕色。

你加的油漆越多,颜色就越深。数字颜色也是由三种原色混合而成,但它的工作原理与油漆不同。

首先,原色是不同的:红色、绿色和蓝色(即“RGB”颜色)。屏幕上的颜色是混合光,而不是颜料,所以混合规则也不同。

  • Red(红色) + Green(绿色) = Yellow(黄色)
  • Red(红色) + Blue(蓝色) = Purple(紫色)
  • Green(绿色) + Blue(蓝色) = Cyan (青色)
  • Red(红色) + Green(绿色) + Blue(蓝色) = White(白色)
  • No colors(没有颜色) = Black(黑色)

这假设所有的颜色都尽可能的明亮,但是当然,你有一个可用的颜色范围,所以一些红色加一些绿色加一些蓝色等于灰色,一点红色加一点蓝色等于深紫色。虽然这可能需要一些习惯,你越多的程序和实验与RGB的颜色,它将变得越本能,很像旋转的颜色与你的朋友。当然,你不能说“混合一些红色和一点蓝色”,你必须提供一个确切的数量。与灰度一样,单个颜色元素表示为从0(不包含该颜色)到255(尽可能多)的范围,它们按R、G和B的顺序列出。通过实验,您将了解RGB颜色混合的窍门,但接下来我们将介绍一些使用一些常见颜色的代码。

我们来看看颜色混合案例

background(255);
noStroke(); // 纯 红色
fill(255,0,0);
ellipse(20,20,16,16);// 暗 红色
fill(127,0,0);
ellipse(40,20,16,16);// 粉 红色
fill(255,200,200);
ellipse(60,20,16,16);

处理也有一个颜色选择器来帮助选择颜色。通过菜单栏 【工具→颜色选择器】

颜色透明度

除了每种颜色的红色、绿色和蓝色分量外,还有一个附加的可选第四分量,称为颜色的“alpha”。

alpha表示透明度,当您要绘制在彼此上方部分透明的元素时,alpha特别有用,有时统称为图像的“alpha通道”。

重要的是要认识到像素不是字面上的透明,也无法实现透明图保存,是通过混合颜色实现的。如果想保存为透明图,那么需要使用PGraphics(具体使用方法:https://processing.org/reference/PGraphics.html)。在场景背后,处理过程接受颜色数字,并将一个数字的百分比与另一个数字的百分比相加,从而创建混合的光学感知。

(如果您对编程“玫瑰色”感兴趣,可以从这里开始。)

Alpha值的范围也从0到255,0是完全透明的(即0%不透明)和255是完全不透明的(即100%不透明)。

我们看一下以下透明颜色案例

size(200,200);
background(0);
noStroke();// 如果没有写第四个透明度参数,默认完全不透明
fill(0,0,255);
rect(0,0,100,200);// 第四个参数为255,表示完全不透明
fill(255,0,0,255);
rect(0,0,200,40);// 第四个参数为191,75%透明度,我们也可以使用乘法(255 *0.75)
fill(255,0,0,191);
rect(0,50,200,40);// 第四个参数为半透明127
fill(255,0,0,127);
rect(0,100,200,40);// 第四个参数为很透明63
fill(255,0,0,63);
rect(0,150,200,40);

自定义颜色范围

RGB颜色的范围为0到255,这不是processing颜色设置的唯一方法。在计算机内存的幕后,颜色总是被称为24位的一系列(如果是带alpha的颜色,则为32位)。然而,processing可以让我们随心所欲地考虑颜色,并将我们的值转换成计算机能理解的数字。例如,您可能更喜欢将颜色视为介于0到100之间(如百分比)。可以通过指定自定义colorMode()来完成此操作。

colorMode(RGB,100);

上面的函数说:“好的,我们想用红色、绿色和蓝色来考虑颜色。RGB值的范围为0到100。”

尽管这样做并不方便,但也可以为每个颜色组件设置不同的范围:

colorMode(RGB,100,500,10,255);

现在我们说的是“红色值从0到100,绿色值从0到500,蓝色值从0到10,alpha值从0到255。”

最后,虽然您可能只需要RGB颜色来满足所有编程需要,但您也可以在HSB(色调、饱和度和亮度)模式下指定颜色。在不涉及太多细节的情况下,HSB颜色的工作原理如下:

  • Hue—颜色的类型,默认为0到255。
  • Saturation—颜色的纯度,默认为0到255。
  • Brightness—颜色的亮度,默认为0到255。

使用colorMode()可以为这些值设置自己的范围。有些人更喜欢0-360的色调范围(想想色轮上的360度),0-100的饱和度和亮度范围(想想0-100%)。

//建议使用HSB颜色模式
colorMode(HSB,360,100,100);

由于颜色是360,所以红,绿,蓝参数很好计算

红色 = 360 * 0/3 = 0

绿色 = 360 * 1/3 = 120

蓝色 = 360 * 2/3 = 240

红色 = 360 * 3/3 = 360      0和360都是红色

红色+绿色 = 黄色 = 120 /2 = 60

绿色+蓝色 = 青色 = 120 + 60 = 180

蓝色+红色 = 紫色 = 240 + 60 = 300

比RGB来说,我们更容易计算出我们所需的颜色。

【04】processing-色彩(中文)相关推荐

  1. ubuntu18.04下安装中文输入法

    ubuntu18.04下安装中文输入法 windows下使用习惯了某款中文输入法,现在使用Ubuntu系统,也想和在windows下一样使用中文输入法,发现该输入法已经有了Linux版本,果断下载下来 ...

  2. Ubuntu 14.04 英文版安装中文输入法

    Ubuntu 14.04 英文版安装中文输入法 本记录安装的仍是ibus的输入法,记录于此,以备忘记之用: 首先更新语言支持,更新完成之后就有了中文输入法: 然后在settings/text entr ...

  3. Ubuntu18.04之微信中文乱码解决(五十八)

    Ubuntu18.04之微信中文乱码解决 1.安装依赖插件 # sudo apt-get install gnome-tweak-tool gnome-shell-extension-top-icon ...

  4. Ubuntu18.04安装Fcitx中文输入法

    Ubuntu18.04安装Fcitx中文输入法 安装ibus之后也无法用中文输入法,Linux中.英文切换方式是win+space(空格) 1.在安装Fcitx之前卸载IBUS,在终端输入以下语句: ...

  5. ubuntu16.04配置Latex+中文字体

    Ubuntu16.04配置Latex+中文字体 Latex安装 先前安装版本的卸载 apt-get安装包的深度卸载 通过安装器"install-tl"安装的texlive卸载 通过 ...

  6. ubuntu实现中文输入法_在Ubuntu 18.04中设置中文输入法

    (本文系搬运,图片来自网络,侵删.英语为自己翻译,水平有限,欢迎指点) Setup Chinese Input Method in Ubuntu 18.04 Fri Oct 20 2017 The o ...

  7. 为 Ubuntu22.04 系统添加中文输入法

    为 Ubuntu22.04 系统添加中文输入法 1.首先,安装 Chinese 语言包 2.单击桌面右上角图标,点击 Settings,在弹出的窗口中,点击 Region & Language ...

  8. Ubuntu Server 16.04.x进入中文安装界面无法安装busybox-initramfs

    Ubuntu Server 16.04 / 19.04中文版安装问题 此图为Ubuntu server 1904 daily-build 2016年09月07日 10:55:30 m沉默01 阅读数: ...

  9. Ubuntu 18.04 配置ibus中文拼音输入法

    18.04系统想安装中文输入法(利用ibus输入法配置)只要三步. 注意:你的Ubuntu需要可以上网!!!因为要下载一系列安装包 第一步:首先需要给Ubuntu18.04安装Chinese语言包支持 ...

  10. 搜狗输入法 linux 17.04,Ubuntu17.04 安装搜狗中文输入法的方法

    写在前面 最近开始用ubuntu系统,开始机器学习的相关学习,经过几天的折腾,终于在Ubuntu17.04装上了搜狗输入法. 安装中文输入法 Ubuntu17.04中支持IBUS,fcitx等输入法框 ...

最新文章

  1. GPT-3 的到来,程序员会被 AI 取代吗?
  2. 7-3 逆序的三位数 (Java)
  3. 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理
  4. 关于Advisor注入
  5. zabbix 配置wechat告警
  6. 怎么用最短时间高效而踏实地学习Python?
  7. 叶修手速900什么概念_什么是数学?数学是探索的过程
  8. iphone9发布_【60秒半导体新闻】消息称国外疫情爆发让苹果取消发布会 iPhone 9跳票/华为P40全家福:7种配色、陶瓷尊享版配豪华五摄...
  9. 怎么禁止浏览器自动保存密码?
  10. IOC容器和Bean的配置
  11. blocks bytes extents比较
  12. php 安装scws,SCWS分词扩展在windows下的安装方法
  13. 即时获取最新全国省市区县地图json数据(亲测可用)以及echarts中使用中国地图
  14. 基于ERP与移动通信平台的商务系统设计
  15. 何谓赛道思维?隔壁阿三加密货币赛道重启,我们何时迎头赶上?
  16. 另辟蹊径,独树一帜的写作方法
  17. Openstack rocky 部署四: neutron 部署与验证(控制节点)
  18. java 中文分词转拼音_pyhanlp 繁简转换之拼音转换与字符正则化
  19. itext 导出word
  20. 【补题计划】Codeforces Round #533+#534(Div.2)

热门文章

  1. VM虚拟机+本地服务器+配置静态IP+宝塔面板(详细过程)
  2. 随印自助打印机,微信文档文件校园共享无人自助打印方案
  3. 关于服务器如何使用与安装screen,以及screen的一些方法!!
  4. 【蓝桥杯基础题】2020年省赛填空题—既约分数
  5. 前端开发好用的工具或者依赖
  6. 一篇超详细的数据分析工作指南
  7. 中国大学生服务外包创新创业大赛
  8. 如何解决多并发的问题
  9. 2022年高处安装、维护、拆除考试练习题及模拟考试
  10. c语言操作mysql和数据库基本操作