颜色ARGB的混合
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的混合的更多相关文章
- 学习 opencv---(4) 分离颜色通道 && 多通道混合
		
上篇文章中我们讲到了使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像混合操作. 而为了更好地观察一些图像材料的特征,有时需要对R ...
 - 在 html 中用加色法混合颜色
		
概要 本文通过解决一个假想的问题介绍了 css screen 混合模式,并介绍了如何用 svg 滤镜.canvas 2d.canvas webgl 实现相同的效果. 问题 下面的图片演示三种颜色光叠加 ...
 - Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
		
Atitti 图像处理 图像混合 图像叠加 blend 原理与实现 混合模式 编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 混合模式是图像处理技术中的一个技术名词,不 ...
 - cocos2d-x混合BlendFunc的使用
		
1.什么是混合模式 “混合”是指两种颜色的叠加方式.在新图片将要渲染画到屏幕上的时候,将用在新图片中的红.绿.蓝和透明度信息,与屏幕上已经存在的图片颜色信息相融合. 说的具体一点,就是把某一像素位置上 ...
 - Sass函数--颜色函数--RGB颜色函数
		
RGB颜色函数-RGB()颜色函数 主要分为 RGB , HSL 和 Opacity 三大函数,当然其还包括一些其他的颜色函数,比如说 adjust-color 和 change-color 等.1. ...
 - Directx11学习笔记【十八】 Blending混合
		
本文由zhangbaochong原创,转载请注明出处http://www.cnblogs.com/zhangbaochong/p/5634580.html 在d3d11中是按frame来渲染物体的,在 ...
 - VS、ReSharper 设置修改代码颜色、提高代码辨识度!附VS超实用快捷!
		
ReSharper 配置代码颜色 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心 ...
 - 【转载】Alpha混合物体的深度排序
		
原文:Alpha混合物体的深度排序 先说个题外话, 本来我想解答一下最近Creators Club论坛上经常出现的一个问题, 意外的是在网上竟然找不到什么全面的答案.. 这是个有着复杂答案的简单问题: ...
 - Alpha混合
		
ShaderLab syntax: Blending 混合 Blending is used to make transparent objects. 混合是用来制作透明物体的. When graph ...
 
随机推荐
- poj 3735 Training little cats(构造矩阵)
			
http://poj.org/problem?id=3735 大致题意: 有n仅仅猫,開始时每仅仅猫有花生0颗,现有一组操作,由以下三个中的k个操作组成: 1. g i 给i仅仅猫一颗花生米 2. e ...
 - 目的可疑,但方法非常值得学习的书——leo鉴书56
			
书中提到写作手法绝对值得学习,为此能够打四颗星. 作者是个买直销产品的.靠写字让别人买自己的东西.当中特别强调了卖的多是太空时代的产品,意思就是读者非常可能并不须要,多半是被眼花缭乱的广告词儿骗了 ...
 - Spring注解运行时抛出null
			
关于Spring的注解其实不难,大致需要以下几个流程: 一.配置Spring的注解支持 <?xml version="1.0" encoding="UTF-8&qu ...
 - centos7 启动httpd的时候为什么显示是这样的
			
我输入 service httpd start显示一下内容:Redirecting to /bin/systemctl start httpd.service -------------------- ...
 - 关于spring xml文件中的xmlns,xsi:schemaLocation(转)
			
使用spring也有一段时间了,配置文件也见了不少了,但是发现配置文件的beans里面有很多链接,一开始也很迷惑,所以抽了一点时间整里了一下. 首先我们看到的一个spring的配置文件大概如下面这个样 ...
 - [na]那些OVER的封装(pppoe/ppp/ipsec)
			
什么over什么,如pppoe, ppp的封装都在over对象之后,入下图: PPPOE Ipsec
 - ueditor图片上传配置
			
ueditor图片上传配置文件为ueditor/php/config.json /* 上传图片配置项 */ "imageActionName": "uploadimage ...
 - How to Acquire or Improve Debugging Skills
			
http://blogs.msdn.com/b/debuggingtoolbox/archive/2007/06/08/recommended-books-how-to-acquire-or-impr ...
 - python地址解析经纬度,城市
			
1.地址列表 1.txt 上海市普陀区梅川路299-301号 浙江省杭州市拱墅区丰登路305-311号1层 江苏省南京市鼓楼区碧树园86号101室 浙江省宁波市江北区范江岸路38弄6号-10号1层商铺 ...
 - [转帖]Cocos2d-x 3.0rc0 的Win32工程添加CocoStudio库
			
转自 http://www.cocoachina.com/bbs/read.php?tid=194668 前天, 在CocoaChina 2014春季大会上, 激动人心的Cocos2d-x 3.0和C ...