- 浏览: 11684 次
最新评论
作者:屈剑峰 2011年4月3日 在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滤镜,构造一个能到达上述公式计算效果的矩阵如下: 最后一行是alpha通道的混合设置,此处"0 0 0 1 0"表示不改变原图像的透明度。
按照此矩阵实现的着色程序效果如下: 原图:
指定混合色为FF0000,混合比例为50%后的显示效果为:
源码: flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" xmlns:filters="org.flexunit.runner.manipulation.fi lters.*"> Array { var r:Number = (mixedColor >> 16) & 0xFF; var g:Number = (mixedColor >> & 0xFF; var b:Number = mixedColor & 0xFF; var array:Array=new Array( 1-mixedValue,0,0,0,r*mixedValue, 0,1-mixedValue,0,0,g*mixedValue, 0,0,1-mixedValue,0,b*mixedValue, 0,0,0,1,0//透明度不变 ); return array; } protected function miexedColorPicker_changeHandler(event:ColorPickerE vent):void { refreshImageFilter(); } private function refreshImageFilter():void{ var matrix:Array=getMatrix(mixedColor.selectedColor,mi xedValue.value/100); var filter:spark.filters.ColorMatrixFilter = new spark.filters.ColorMatrixFilter(matrix); var filters:Array = new Array(); filters.push(filter); starImage.filters=filters; } protected function mixedValueSlider_changeHandler(event:Event):void { refreshImageFilter(); } ]]-->
发表评论
-
string(字符串)类常用成员----增+,append,insert 删erase 改replace 查find 遍历 截取子串 字符串比较
2012-07-06 09:52 1050头文件及命名空间: ... -
Lex和yacc工具介绍
2012-07-06 09:46 705在编译过程中,词 ... -
Ext 对象编程-单页面组件销毁
2012-07-03 13:44 819单页面组件销毁 为了贯彻OO设计, 在使用单页面Ext ... -
打包swf flash应用为PlayBook AIR应用
2012-07-02 13:04 642命令行打包swf flash应用为PlayBook AIR ... -
flex4 datagrid里点击链接打开图片的方法
2012-07-02 13:03 6111. 在datagrid里面 加入链接 链接新窗口显 ... -
flex 显示pdf文档
2012-07-02 13:03 646FlexPager下载地址 http://code.goo ... -
[酷东东] 在Flex里嵌入网页:IFrame 开源类库
2012-07-02 13:03 712项目 地址:http://code.google .com ... -
第5课 Spark组件、Halo组件和Flex命名空间
2012-07-02 13:03 576flex/spark" xmln ... -
Flex 文件上传导入组件
2012-07-01 10:37 580上文讲到Flex利用Blazeds来上传文件,本文则封装了 ... -
Flex 数据易犯错误: 常见误用和错误
2012-07-01 10:37 728在某些情形下,绑定操作似乎不能正常工作,此时你可能非常懊恼 ... -
flex 中GML转换
2012-07-01 10:37 686package org.openscales.core.f ... -
Flex学习笔记
2012-07-01 10:37 600类成员有四种修饰符: public internal ... -
在Eclipse下使用Ant编译Flex程序
2012-06-30 17:01 577在Eclipse下使用Ant编译Fle ... -
Flex4+Spring3+Hibernate3+BlazeDS整合笔记
2012-06-30 17:01 606Flex4+Spring3+Hibernate3+BlazeD ... -
Flex是咋回事之二 前世今生
2012-06-30 17:01 564Flex是咋回事之二 前世 ... -
Flex 应用内存泄露的分析与诊断
2012-06-30 17:01 551Flex 应用内存泄露的分析与诊断 2010年11月01日 ... -
探究 Flex 组件的生命周期
2012-06-30 17:01 515探究 Flex 组件的生命周期 2011年01月05日 ...
相关推荐
flex中给图片或任意组件着色的方法。希望我写的这段程序可以满足大家的项目需求。
Flex 组件Flex 组件Flex 组件Flex 组件Flex 组件
flex 组件 保存为图片flex 组件 保存为图片flex 组件 保存为图片flex 组件 保存为图片flex 组件 保存为图片flex 组件 保存为图片flex 组件 保存为图片
flex组件保存为图片,弹出保存对话框,更改保存路径,图片名。
flex 图片缩放移动组件 以封装成包 通过鼠标操作对图片进行放大、缩小、移动位置等
Flex中获取组件快照的ByteArray,然后调用JavaServlet将ByteArray导出成图片。
这个在使用的时候可以自己加,另外一个问题就是由于这个库是FLEX3的,所以在FLEX4.0或以上的版本(使用的spark主题)的时候,需要修改类里面的Canvas为Group或者其他的显示容器,如果有什么问题可以发邮件给我。...
很通用的Flex 分页组件,经过本人测试,可以应用到项目中,很方便
Flex相册 Flex图片
在Flex中如何使用按钮Button组件进行开发
flex做拓扑图的组件flex做拓扑图的组件flex做拓扑图的组件
Flex3组件拖放教程,该组件是flex组件中最有特色的
Flex3组件介绍,包含flex3的所有组件介绍并有例子
flex 重写组件
研究Flex 组件声明周期,了解组件的生成步骤
flex组件的所有源文件 flex组件的所有源文件 flex组件的所有源文件 flex组件的所有源文件
flex组件之数据可视化组件实例源码 包括多种chart,共27个实例
flex 背景图片重复的组件库 类似HTML的CSS样式表中的背景重复
flex 高级自定义组件 需要重写的方法,以及为什么要重写,何时调用等。
详解Flex4的系统组件与基本组件。让你在应用的时候知道用什么.