`
qujianfeng
  • 浏览: 77660 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

    博客分类:
  • 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%后的显示效果为:



 

点击下载源码。

 

  • 大小: 159.8 KB
  • 大小: 135.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics