flex中给图片(或任意组件)着色的方法

作者:屈剑峰   201143

 

flex中可使用ColorMatrixFilter滤镜给组件着色,该滤镜属性matrix是一个4*5的矩阵,Flex在显示组件时各像素新的颜色计算公式如下:

redResult=(a[0]*srcR) + (a[1]*srcG) + (a[2]  * srcB) + (a[3] *srcA) + a[4]
 
 greenResult=(a[5]*srcR) + (a[6]*srcG) + (a[7]*srcB) + (a[8] *srcA) + a[9] 
 
 
 blueResult = (a[10]*srcR) + (a[11]*srcG) + (a[12]*srcB) + (a[13] *srcA) + a[14] 
 
 
 alphaResult = (a[15]*srcR) + (a[16]*srcG) + (a[17]*srcB) + (a[18]*srcA) + a[19] 
 
 

现在,我的需求是给图片着色,参数为:

1、混合颜色;

2、混合比例

我们称原图片中某像素的颜色值为源source,称混合色为目标target,设混合比例为k。那么处理得到的新颜色中红色分量的值为:

r=rs×(1-k)+rt×k

     

 

其中rs为原红色分量值,rt为混合色中的红色分量值。

同理,新颜色中绿色与蓝色分量的值分别为:

g=gs×(1-k)+gt×k

b=bs×(1-k)+bt×k

 

 

上述公式就是给图片着色的原理。

 

那么,现在为了使用ColorMatrixFilter滤镜,构造一个能到达上述公式计算效果的矩阵如下:

1-k

0

0

0

rt×k

0

1-k

0

0

gt×k

0

0

1-k

0

bt×k

0

0

0

1

0

 最后一行是alpha通道的混合设置,此处“0  0  0  1  0表示不改变原图像的透明度。

 

按照此矩阵实现的着色程序效果如下:

 

 原图:



 指定混合色为FF0000,混合比例为50%后的显示效果为:



 

点击下载源码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值