Update 颜色.md
This commit is contained in:
35
问题/颜色/颜色.md
35
问题/颜色/颜色.md
@@ -5,7 +5,7 @@
|
||||
一.简单介绍颜色
|
||||
二.几种创建或定义颜色的方式
|
||||
三.推荐取色工具
|
||||
四.详解颜色混合模式(即Alpha通道相关)
|
||||
四.颜色混合模式(Alpha通道相关)
|
||||
```
|
||||
|
||||
## 一.简单介绍颜色
|
||||
@@ -76,7 +76,38 @@ RGB 从0x00到0xff表示颜色从浅到深。
|
||||
```
|
||||
|
||||
## 三.取色工具
|
||||
话说颜色都是用RGB值定义的,而我们一般是无法
|
||||
颜色都是用RGB值定义的,而我们一般是无法直观的知道自己需要颜色的值,需要借用取色工具直接从图片或者其他地方获取颜色的RGB值。
|
||||
|
||||
### 1.屏幕取色工具
|
||||
取色调色工具,可以从屏幕取色或者使用调色板调制颜色,非常小而精简。
|
||||
|
||||
<b>[点击这里获取屏幕取色工具](http://pan.baidu.com/s/1gdWkN0B)</b>
|
||||
|
||||
### 2.Picpick
|
||||
功能更加强大的工具:PicPick。
|
||||
|
||||
PicPick具备了截取全屏、活动窗口、指定区域、固定区域、手绘区域功能,支持滚动截屏,屏幕取色,支持双显示器,具备白板、屏幕标尺、直角座标或极座标显示与测量,具备强大的图像编辑和标注功能。
|
||||
|
||||
<b>[点击这里获取PicPick](http://ngwin.com/picpick)</b>
|
||||
|
||||
## 四.颜色混合模式(Alpha通道相关)
|
||||
每个Color里可以有四个通道ARGB,其中RGB是红绿蓝,A即Alpha通道,它通常的作用是用来作为此颜色的透明度。
|
||||
|
||||
因为我们的显示屏是没法透明的,因此最终显示在屏幕上的颜色里可以认为没有Alpha通道。Alpha通道主要在两个图像混合的时候生效。
|
||||
|
||||
默认情况下,当一个颜色绘制到Canvas上时的混合模式是这样计算的:(RGB通道) 最终颜色 = 绘制的颜色 + (1 - 绘制颜色的透明度) × Canvas上的原有颜色。
|
||||
|
||||
<b>注意:</b>
|
||||
|
||||
1.这里我们一般把每个通道的取值从0(ox00)到255(0xff)映射到0到1的浮点数表示。
|
||||
|
||||
2.这里等式右边的“绘制的颜色"、“Canvas上的原有颜色”都是经过预乘了自己的Alpha通道的值。如绘制颜色:0x88ffffff,那么参与运算时的每个颜色通道的值不是1.0,而是(1.0 * 0.5333 = 0.5333)。 (其中0.5333 = 0x88/0xff)
|
||||
|
||||
使用这种方式的混合,就会造成后绘制的内容以半透明的方式叠在上面的视觉效果。
|
||||
|
||||
其实还可以有不同的混合模式供我们选择,用Paint.setXfermode,指定不同的PorterDuff.Mode。
|
||||
|
||||
下表是各个PorterDuff模式的混合计算公式:(D指原本在Canvas上的内容dst,S指绘制输入的内容src,a指alpha通道,c指RGB各个通道)
|
||||
|
||||
<table class="confluenceTable">
|
||||
<tbody>
|
||||
|
||||
Reference in New Issue
Block a user