Update 颜色.md

This commit is contained in:
sloop
2016-01-10 19:01:48 +08:00
parent 81dc36fce5
commit e344c6eae3

View File

@@ -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上的内容dstS指绘制输入的内容srca指alpha通道c指RGB各个通道
<table class="confluenceTable">
<tbody>