手机开发实战145——ALPHA介绍

来源:互联网 发布:淘宝 i7主机 编辑:程序博客网 时间:2024/06/05 05:16

ALPHA介绍

在图形学中,ALPHA指的是除了颜色的三个分量(RGB)外的第四个分量:透明度。所以,一个真彩色(指利用RGB分量合成颜色)的像素就变成由四个分量组成:RGBA。在我们的讨论里,设RGBA均为从01的值,其中ALPHA=0为完全透明,ALPHA=1为完全覆盖,中间的数值代表半透明。这样的设定是为了能使本文独立于显示硬件。我们把诸如(RGBA)这样的东西称为四元组。一个这样的四元组代表一个由R*AG*AB*A组合而成的颜色。
    
有一点重要的是,要清楚分辨如下两个关键像素的意义:
黑色=(0,0,0,1)
完全透明=(0,0,0,0
    
根据ALPHA通道数据进行混合的算法:
  只需要把需要组合的颜色计算出不含ALPHA分量的原始RGB分量然后相加便可。比如现在有两幅图象,分别称为图象A和图象B,由这两幅图象组合而成的图象称为C,则有如下的四元组:
    A: (RaGaBaALPHAa)
    B: (Rb, Gb, Bb, ALPHAb)
  和组合后的RGB三元组:
    C: (Rc, Gc, Bc)
  则:
    Rc = Ra * ALPHAa + Rb * ALPHAb
    Gc = Ga * ALPHAa + Gb * ALPHAb
    Bc = Ba * ALPHAa + Bb * ALPHAb
  便可得出混合后的颜色。
  如果有多幅图像需要混合,则按照以上方法两幅两幅地进行混合。

算法实例:

首先,要能取得上层与下层颜色的 RGB三基色,然后用
r,g,b 
为最后取得的颜色值;r1,g1,b1是上层的颜色值;r2,g2,b2是下层颜色值
r = r1/2 + r2/2;
g = g1/2 + g2/2;
b = b1/2 + b2/2;
以上为50%透明。

若要使用不同的透明度用以下算法(ALPHA=透明度):

50%以下)

r = r1 - r1/ALPHA + r2/ALPHA;
g = g1 - g1/ALPHA + g2/ALPHA;
b = b1 - b1/ALPHA + b2/ALPHA;
50%以上)

r = r1/ALPHA + r2 - r2/ALPHA;
g = g1/ALPHA + g2 - g2/ALPHA;
b = b1/ALPHA + b2 - b2/ALPHA;

0 0
原创粉丝点击