加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 01:35:08 所属栏目:百科 来源:网络整理
导读:作者:屈剑峰 ?? 2011 年 4 月 3 日 ? ? ???? 在 flex 中可使用 ColorMatrixFilter 滤镜给组件着色,该滤镜属性 matrix 是一个 4*5 的矩阵, Flex 在显示组件时各像素新的颜色计算公式如下: redResult=(a[0]*srcR) + (a[1]*srcG) + (a[2] ? * srcB) + (a[3]

作者:屈剑峰?? 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

?????

?

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

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

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%后的显示效果为:

源码:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读