我们知道,程序中一般使用RGB三个混合的方式来表示颜色,除了RGB这三个颜色之外我们经常会用到alpha来表示透明值,如果0表示完全透明,1表示完全不透明,通过调节alpha大小和RGB值就可以得到各种各样的颜色了,而且有了透明度我们还可以做出很多视觉特效,
那么问题来了,学挖掘机到底…,额,不对,问题是当两个颜色重叠在一起的时候最终得到的颜色值应该怎么计算,
举个栗子,现在有一个背景色X,其RGB值分别时R1,G1,B1,alpha值为1,另有一个前景色Y,其RGB值和alpha值分别是R2,G2,B2,0.7
想象一下,由于Y是半透明的,我们透过Y显然时可以看到X的颜色,X能够透过Y最终到达我们眼睛的颜色被Y“过滤”因而失去了70%,
那么最终得到的颜色Z,其颜色值分别就是
R3=R1 * (1 - 0.7) + R2 * 0.7
G3=G1 * (1 - 0.7) + G2 * 0.7
B3=B1 * (1 - 0.7) + B2 * 0.7
那么Z的alpha值是多少?
从对于最终的显示效果来看,alpha值永远是1,因为你总不可能把显示器看穿吧,
当然了,单纯考虑两个颜色的alpha混合值,可以使用Alpha3 = Alpha1 * (1 - Alpha2) + Alpha2 = Alpha1 + Alpha2 - Alpha1 * Alpha2