Alpha 透明度混合算法,网上收集整理,分成以下三种:

一、 R1,G1,B1,Alpha1 为前景颜色值[混合颜色 上图层],R2,G2,B2,Alpha2 为背景颜色值[混合颜色 下图层],则

颜色值:R = R1 * Alpha1 + R2 * Alpha2 * (1-Alpha1) ;

G = G1 * Alpha1 + G2 * Alpha2 * (1-Alpha1) ;

B = B1 * Alpha1 + B2 * Alpha2 * (1-Alpha1) ;

透明度:Alpha = 1 - (1 - Alpha1) * ( 1 - Alpha2) ;

R = R / Alpha ;

G = G / Alpha ;

B = B / Alpha ;

二、半透明算法:
      混合算法目前在常用到的算法是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上这个位置的颜色。

三、简易Alpha混合算法:首先,要能取得上层与下层颜色的 RGB三基色,

然后用r,g,b 为最后取得的颜色值;r1,g1,b1是上层的颜色值;r2,g2,b2是下层颜色值

若Alpha=透明度,则

当Alpha=50%时,

r = r1/2 + r2/2;

g = g1/2 + g2/2;

b = b1/2 + b2/2;

当Alpha<50%时,

r = r1 - r1/ALPHA + r2/ALPHA;

g = g1 - g1/ALPHA + g2/ALPHA;

b = b1 - b1/ALPHA + b2/ALPHA;

当Alpha>50%时,

r = r1/ALPHA + r2 - r2/ALPHA;

g = g1/ALPHA + g2 - g2/ALPHA;

b = b1/ALPHA + b2 - b2/ALPHA;

原文地址: http://blog.csdn.net/xhhjin/article/details/6445460

颜色ARGB的混合的更多相关文章

  1. 学习 opencv---(4) 分离颜色通道 && 多通道混合

    上篇文章中我们讲到了使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像混合操作. 而为了更好地观察一些图像材料的特征,有时需要对R ...

  2. 在 html 中用加色法混合颜色

    概要 本文通过解决一个假想的问题介绍了 css screen 混合模式,并介绍了如何用 svg 滤镜.canvas 2d.canvas webgl 实现相同的效果. 问题 下面的图片演示三种颜色光叠加 ...

  3. Atitti 图像处理 图像混合 图像叠加 blend 原理与实现

    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现 混合模式 编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 混合模式是图像处理技术中的一个技术名词,不 ...

  4. cocos2d-x混合BlendFunc的使用

    1.什么是混合模式 “混合”是指两种颜色的叠加方式.在新图片将要渲染画到屏幕上的时候,将用在新图片中的红.绿.蓝和透明度信息,与屏幕上已经存在的图片颜色信息相融合. 说的具体一点,就是把某一像素位置上 ...

  5. Sass函数--颜色函数--RGB颜色函数

    RGB颜色函数-RGB()颜色函数 主要分为 RGB , HSL 和 Opacity 三大函数,当然其还包括一些其他的颜色函数,比如说 adjust-color 和 change-color 等.1. ...

  6. Directx11学习笔记【十八】 Blending混合

    本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5634580.html 在d3d11中是按frame来渲染物体的,在 ...

  7. VS、ReSharper 设置修改代码颜色、提高代码辨识度!附VS超实用快捷!

    ReSharper 配置代码颜色 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心 ...

  8. 【转载】Alpha混合物体的深度排序

    原文:Alpha混合物体的深度排序 先说个题外话, 本来我想解答一下最近Creators Club论坛上经常出现的一个问题, 意外的是在网上竟然找不到什么全面的答案.. 这是个有着复杂答案的简单问题: ...

  9. Alpha混合

    ShaderLab syntax: Blending 混合 Blending is used to make transparent objects. 混合是用来制作透明物体的. When graph ...

随机推荐

  1. 2-05. 求集合数据的均方差(15) (数学啊 ZJU_PAT)

    题目链接:http://pat.zju.edu.cn/contests/ds/2-05 设计函数求N个给定整数的均方差.若将N个数A[]的平均值记为Avg,则均方差计算公式为: 输入格式说明: 第1行 ...

  2. hibernate,动态更新,插入 dynamic-insert,dynamic-update 我有话要说 ---稍后整理

    http://dreamzhong.iteye.com/blog/1207377 http://blog.csdn.net/hsuxu/article/details/8108326 @org.hib ...

  3. 进程间通信(java)--队列

    前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便 ...

  4. perl的匿名引用

    perl中列表不能嵌套,只能通过引用的方式构建复杂的结构.引用其实就是c中的指针,只不过perl中对指针,也就是一个地址的声明和取值有自己的一套方法. 1.先复习普通标量的引用方法: [vagrant ...

  5. 如何对多个文件进行MODELSIM仿真? (由于是一个很大的项目,不可能把所有MODULE都放在一个文件里。 如何在ModelSim中对多个.V文件进行仿真?)

    可以将所有要编译的所有文件的名字做一个list.新建一个文本文档,重命名为vflist vflist内容例子如下(src为文件夹):src/base_addr_chk.vsrc/config_mux. ...

  6. 【Android】11.3 屏幕旋转和场景变换过程中GridView的呈现

    分类:C#.Android.VS2015: 创建日期:2016-02-21 一.简介 实际上,对于布局文件中的View来说,大多数情况下,Android都会自动保存这些状态,并不需要我们都去处理它.这 ...

  7. Mysql 中创建索引和索引的使用问题

    在数据库中合理的使用索引是提升mysql数据库的一种高效和快捷的方式,但是在索引的使用上在我的使用中发现有很多坑,因为自己之前没有认识到,所以来总结一下 索引的介绍 索引是一种特殊的文件,其中包含着对 ...

  8. The power of now

    惊喜的发现,在这个短暂而又漫长的盛夏里心情开始随天气而变了(*^__^*) ...... <秘密>和<当下的力量>两者都一样,看起来费劲,不过还真的有点道理. <冰与火之 ...

  9. arm B和BL指令浅析

    arm B和BL指令浅析 B或BL指令引起处理器转移到“子程序名”处开始执行.两者的不同之处在于:(1)BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器).      ...

  10. 利用eclipse中的各种功能帮助你理解代码

    @菜单栏下面,工具栏,有一对黄色的箭头按钮,一个指向左边,一个指向右边,快捷键是Alt+Left/Alt+Right 功能是跳转到你刚刚编辑过的地方 这里的Left/Right指的是左右方向键,可以方 ...