默认的ColorMatrix对象就是所谓的标识,就像默认的Matrix对象一样,当应用它时不会改变图像。查看以下这个数组所包含的内容将帮助我们理解它如何工作。
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
这是一个包含了20个浮点数的数组。第一行包含了在单个像素的红色部分上发生的操作,第二行影响绿色部分,第三行操作蓝色部分,而最后一行操作像素的Alpha值。
在每一行中,第一个数字是与像素的红色值相关联的乘数,第二个数字是与绿色值相关联的乘数,第三个数字与蓝色相关,第四个数字与Alpha值相关,而最后一个数字不会与任何值相乘。将这些值都加起来以改变它们正在操作的像素。
假设现在有一个中等灰度的像素,其红色值是128,蓝色值是128,绿色值是128,Alpha值为0(它是不透明的)。如果通过上面的颜色矩阵来操作这个像素,那么数学公式将看起来如下所示:
新的红色值= 1 * 128 + 0 * 128 + 0 * 128 + 0 * 0 + 0
新的蓝色值= 0 * 128 + 1 * 128 + 0 * 128 + 0 * 0 + 0
新的绿色值= 0 * 128 + 0 * 128 + 1 * 128 + 0 * 0 + 0
新的Alpha值= 0 * 128 + 0 * 128 + 0 * 128 + 1 * 0 + 0
所有的值都将保持不变,设置为128。对于用于像素的任何颜色变量,情况都将如此,因为每一行在操作代表它的颜色的位置都有一个1,而在其他位置均为0。
如果只想让一幅图像看起来比之前红两倍,那么可以将操作所有像素的红色值的数字增加为2以替换1。这将使矩阵中的红色值翻倍。
2 0 0 0 0
0 1 0 0 0