public class ColorMatrix
extends Object
java.lang.Object | |
↳ | android.graphics.ColorMatrix |
4x5矩阵,用于转换位图的颜色和alpha分量。 该矩阵可以作为单个数组传递,并按如下方式处理:
[ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t ]
当应用于颜色 [R, G, B, A]
,生成的颜色计算如下:
R’ = a*R + b*G + c*B + d*A + e; G’ = f*R + g*G + h*B + i*A + j; B’ = k*R + l*G + m*B + n*A + o; A’ = p*R + q*G + r*B + s*A + t;
结果颜色 [R’, G’, B’, A’]
然后将每个通道钳位到 0
到 255
范围。
下面的示例ColorMatrix通过缩放每个通道 -1
来反转输入颜色,然后将结果向上移动 255
以保留在标准色彩空间中。
[ -1, 0, 0, 0, 255, 0, -1, 0, 0, 255, 0, 0, -1, 0, 255, 0, 0, 0, 1, 0 ]
Public constructors |
|
---|---|
ColorMatrix() 创建一个初始化为标识的新colormatrix(就像调用reset()一样)。 |
|
ColorMatrix(float[] src) 用指定的值数组创建一个新的colormatrix。 |
|
ColorMatrix(ColorMatrix src) 创建一个用指定的颜色矩阵初始化的新颜色矩阵。 |
Public methods |
|
---|---|
final float[] |
getArray() 返回表示此颜色矩阵的浮点数组。 |
void |
postConcat(ColorMatrix postmatrix) 使用指定的后处理函数对此颜色矩阵进行Concat。 |
void |
preConcat(ColorMatrix prematrix) 使用指定的前置矩阵对此colormatrix进行Concat。 |
void |
reset() 将此颜色矩阵设置为标识: [ 1 0 0 0 0 - red vector 0 1 0 0 0 - green vector 0 0 1 0 0 - blue vector 0 0 0 1 0 ] - alpha vector |
void |
set(float[] src) 将浮点数组分配到该矩阵中,并复制其所有值。 |
void |
set(ColorMatrix src) 将src色彩矩阵分配到此矩阵中,并复制其所有值。 |
void |
setConcat(ColorMatrix matA, ColorMatrix matB) 将此颜色矩阵设置为两个指定颜色矩阵的连接,使得生成的颜色矩阵与应用matB并应用matA具有相同的效果。 |
void |
setRGB2YUV() 设置矩阵将RGB转换为YUV |
void |
setRotate(int axis, float degrees) 通过指定的值设置颜色轴上的旋转。 |
void |
setSaturation(float sat) 设置矩阵以影响颜色的饱和度。 |
void |
setScale(float rScale, float gScale, float bScale, float aScale) 设置此颜色矩阵以按指定值进行缩放。 |
void |
setYUV2RGB() 将矩阵设置为从YUV转换为RGB |
Inherited methods |
|
---|---|
From class java.lang.Object
|
ColorMatrix (float[] src)
用指定的值数组创建一个新的colormatrix。
Parameters | |
---|---|
src |
float
|
ColorMatrix (ColorMatrix src)
创建一个用指定的颜色矩阵初始化的新颜色矩阵。
Parameters | |
---|---|
src |
ColorMatrix
|
void postConcat (ColorMatrix postmatrix)
使用指定的后处理函数对此颜色矩阵进行Concat。
这在逻辑上与调用setConcat(postmatrix,this)相同;
Parameters | |
---|---|
postmatrix |
ColorMatrix
|
void preConcat (ColorMatrix prematrix)
使用指定的前置矩阵对此colormatrix进行Concat。
这在逻辑上与调用setConcat(this,prematrix)相同;
Parameters | |
---|---|
prematrix |
ColorMatrix
|
void reset ()
将此颜色矩阵设置为标识:
[ 1 0 0 0 0 - red vector 0 1 0 0 0 - green vector 0 0 1 0 0 - blue vector 0 0 0 1 0 ] - alpha vector
void set (ColorMatrix src)
将src色彩矩阵分配到此矩阵中,并复制其所有值。
Parameters | |
---|---|
src |
ColorMatrix
|
void setConcat (ColorMatrix matA, ColorMatrix matB)
将此颜色矩阵设置为两个指定颜色矩阵的连接,使得生成的颜色矩阵与应用matB并应用matA具有相同的效果。
matA或matB与此相同的颜色矩阵是合法的。
Parameters | |
---|---|
matA |
ColorMatrix
|
matB |
ColorMatrix
|
void setRotate (int axis, float degrees)
通过指定的值设置颜色轴上的旋转。
axis=0
对应于围绕红色的旋转 axis=1
对应于围绕绿色的旋转 axis=2
对应于绕BLUE颜色的旋转
Parameters | |
---|---|
axis |
int
|
degrees |
float
|
void setSaturation (float sat)
设置矩阵以影响颜色的饱和度。
Parameters | |
---|---|
sat |
float : A value of 0 maps the color to gray-scale. 1 is identity. |
void setScale (float rScale, float gScale, float bScale, float aScale)
设置此颜色矩阵以按指定值进行缩放。
Parameters | |
---|---|
rScale |
float
|
gScale |
float
|
bScale |
float
|
aScale |
float
|