半透明算法

来源:互联网 发布:51单片机电源引脚功能 编辑:程序博客网 时间:2024/05/22 03:37

半透明算法:
   混合算法目前在常用到的算法是AlphaBlend。
   计算公式如下:假设一幅图象是A,另一幅透明的图象是B,那么透过B去看A,看上去的图象C就是B和A的混合图象,
   设B图象的透明度为alpha(取值为0-1,1为完全透明,0为完全不透明).
    Alpha混合公式如下:
       R(C)=(1-alpha)*R(B) + alpha*R(A)
       G(C)=(1-alpha)*G(B) + alpha*G(A)
       B(C)=(1-alpha)*B(B) + alpha*B(A)
       R(x)、G(x)、B(x)分别指颜色x的RGB分量原色值。从上面的公式可以知道,Alpha其实是一个决定混合透明度的数值。
   改变这个 alpha 值可以得到一个渐变的效果。

分离RGB色用"位与"、"移位"运算的方法;

   透明的比例按2的N次幂来分级,这样可以快速运算。
   如果是按32级
  Alpha = 1/32
  B图的权重 = (32-n)/32,则A图的权重= n/32,

  可以得到这样的算法:

  R(C)= (32-n) * R(B)+ n* R(A);
 再对R(C)右移5位(除以32)就可以了
 
透明的处理:
   假设指定B上的黑色透明色,则碰到B上的颜色为黑色,则不显示黑色,改为显示A上这个位置的颜色。