这次使用colorTranfrom主要用来将一个已有的过渡颜色映射到其他颜色条。发现这个colorTranfrom很好使用,于是简单研究了下

文档有说明:

使用 ColorTransform 类调整显示对象的颜色值。可以将颜色调整或颜色转换应用于所有四种通道:红色、绿色、蓝色和 Alpha 透明度。

其中颜色透明度的转换公式大致如下:

当 ColorTransform 对象应用于显示对象时,将按如下方法为每个颜色通道计算新值:

  • 新红色值 = (旧红色值 * redMultiplier) + redOffset
  • 新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset
  • 新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset
  • 新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset

如果计算后任何一个颜色通道值大于 255,则该值将被设置为 255。如果该值小于 0,它将被设置为 0。

注意:

1、当设置color属性后,其将会对原位图对象所有颜色映射到当前颜色,只保留其透明度变化效果。

2、每次修改都是在原始位图基础上修改显示结果,并不会对原始位图产生修改。

附加:有兴趣的朋友可以研究下bitmapData.paletteMap方法。使用该方法可以对当前矩阵中的整体颜色映射到一个颜色组中,跟colorTranfrom设置color有点相反作用的感觉。

给个简单的demo示例:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import mx.events.ColorPickerEvent;
import mx.events.SliderEvent; protected function slider1_changeHandler(event:SliderEvent):void
{ var colorTrans:ColorTransform = new ColorTransform;
colorTrans.redMultiplier = redMultiplierSlider.value;
colorTrans.greenMultiplier = greenMultiplierSlider.value;
colorTrans.blueMultiplier = blueMultiplierSlider.value;
colorTrans.alphaMultiplier = alphaMultiplierSlider.value; colorTrans.redOffset = redOffsetSlider.value;
colorTrans.greenOffset = greenOffsetSlider.value;
colorTrans.blueOffset = blueOffsetSlider.value;
colorTrans.alphaOffset = alphaOffsetSlider.value; imgTarget.transform.colorTransform = colorTrans;
objTarget.transform.colorTransform = colorTrans;
} protected function colorPicker_changeHandler(event:ColorPickerEvent):void
{
var colorTrans:ColorTransform = new ColorTransform;
colorTrans.color = event.color;
imgTarget.transform.colorTransform = colorTrans;
objTarget.transform.colorTransform = colorTrans;
} ]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:layout>
<s:VerticalLayout clipAndEnableScrolling="true"/>
</s:layout>
<s:Panel width="100%" height="300">
<s:layout>
<s:TileLayout horizontalAlign="center" verticalAlign="middle"
rowHeight="60" columnWidth="320" columnAlign="left" rowAlign="top"/>
</s:layout>
<s:HGroup>
<s:Label text="直接使用颜色Color:"/>
<mx:ColorPicker id="colorPicker" change="colorPicker_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="红色系数redMultiplier:"/>
<mx:Slider width="150" height="30" id="redMultiplierSlider"
maximum="1" minimum="0" value="1" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="绿色系数greenMultiplier:"/>
<mx:Slider width="150" height="30" id="greenMultiplierSlider" maximum="1" minimum="0" value="1" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="蓝色系数blueMultiplier:"/>
<mx:Slider width="150" height="30" id="blueMultiplierSlider" maximum="1" minimum="0" value="1" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="透明度alphaMultiplier:"/>
<mx:Slider width="150" height="30" id="alphaMultiplierSlider" maximum="1" minimum="0" value="1" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="红色偏移redOffset:"/>
<mx:Slider width="150" height="30" id="redOffsetSlider" maximum="255" minimum="-255" value="0" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="绿色色偏移greenOffset:"/>
<mx:Slider width="150" height="30" id="greenOffsetSlider" maximum="255" minimum="-255" value="0" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="蓝色偏移redOffset:"/>
<mx:Slider width="150" height="30" id="blueOffsetSlider" maximum="255" minimum="-255" value="0" change="slider1_changeHandler(event)"/>
</s:HGroup>
<s:HGroup>
<s:Label text="alpha偏移redOffset:"/>
<mx:Slider width="150" height="30" id="alphaOffsetSlider" maximum="255" minimum="-255" value="0" change="slider1_changeHandler(event)"/>
</s:HGroup>
</s:Panel> <s:Group id="view">
<s:Image id="imgTarget" source="assets/img_colorTransform.jpg"/> <s:Group id="objTarget" width="300" height="300" x="500">
<s:Rect width="100%" height="100%">
<s:fill>
<s:RadialGradient>
<s:entries>
<s:GradientEntry color="0xff0000" alpha="1" ratio="0"/>
<s:GradientEntry color="0x00ff00" alpha=".7" ratio=".6"/>
<s:GradientEntry color="0x0000ff" alpha=".2" ratio="1"/>
</s:entries>
</s:RadialGradient>
</s:fill>
</s:Rect>
</s:Group>
</s:Group>
</s:Application>

  

Flex colorTranfrom使用说明的更多相关文章

  1. flex.css声明式布局

    flex.css能完美的运行在移动端的各种浏览器,甚至能运行在ie10+的各种PC端浏览器中 flex和data-flex flex.css 有两个版本,一个是flex.css一个是data-flex ...

  2. [转]Flash Player、AIR、Flex SDK 大全

    平时不断看到有朋友在各种论坛.空间.知道.群里求 Flash 平台各种版本的运行时(Flash Player)和SDK(Flex.AIR).今天就看到不下10次!所以决定把 Macromedia.Ad ...

  3. Flex Array内置排序方法的使用

    在Array类中,提供内置的排序方法.排序是在软件开发的过程中,经常遇到的问题.通过这些内置的方法,可以快速轻便的进行排序操作. Array类提供sort方法对Array实例进行排序.sort方法没有 ...

  4. UniGUI的布局使用说明

    (unigui的页面布局还是很强大的,基本什么的排版都能搞好.前面部分为原文章翻译,翻译不一定很准确,就能看吧,后面有使用说明,有什么不明白的欢迎加我QQ(910300653)一起交流学习) 一.布局 ...

  5. DBProxy 读写分离使用说明

    美团点评DBProxy读写分离使用说明   目的 因为业务架构上需要实现读写分离,刚好前段时间美团点评开源了在360Atlas基础上开发的读写分离中间件DBProxy,关于其介绍在官方文档已经有很详细 ...

  6. Flash&Flex大全

    官方在线帮助(没标英文的都是中文) 用于 Adobe Flash Platform 的 ActionScript 3.0 参考 更多参考使这样的链接下载离线版:http://help.adobe.co ...

  7. OpenCASCADE Expression Interpreter by Flex & Bison

    OpenCASCADE Expression Interpreter by Flex & Bison eryar@163.com Abstract. OpenCASCADE provide d ...

  8. Flex 布局教程:语法篇

    作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...

  9. Flex 布局教程:实例篇

    该教程整理自 阮一峰Flexible教程 今天介绍常见布局的Flex写法.你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我的主要参考资料是Landon Schropp的文章和Solved ...

随机推荐

  1. (转)python之并行任务的技巧

    Python的并发处理能力臭名昭著.先撇开线程以及GIL方面的问题不说,我觉得多线程问题的根源不在技术上而在于理念.大部分关于Pyhon线程和多进程的资料虽然都很不错,但却过于细节.这些资料讲的都是虎 ...

  2. [SHOI2009] 交通网络

    简单最短路计数. #include<bits/stdc++.h> #define ll long long using namespace std; #define D double co ...

  3. Hadoop下大矩阵乘法Version2

    1)使用本方法计算F*B,其中F是1000*1000的矩阵,B是1000*20000的矩阵,使用三个节点的集群,每个节点一个CPU核(集群装在虚拟机里,宿主机只有4个CPU核),每个节点配置一个map ...

  4. 微信小程序API·目录

    网络 媒体 文件 数据缓存 位置 设备 界面 第三方平台 开放接口 数据 更新 多线程 监控 调试接口 日志

  5. display:block什么时候使用

    所有的块级元素不需要再在使用display:block定义,块级元素本身的默认属性就是block display:block:比较常用于<a><span>这两个标签,因为他们不 ...

  6. iOS 取消警告

    第一步找到要取消的警告类型 在相应的警告上右击->Reveal in Log 被选中的-Wdeprecated-declarations就是我们所要的警告类型了. -W是前缀,这个前缀表示的是 ...

  7. linux-去重-uniq

    uniq : 默认(去重)  |  -d(显重)   |   -u(删重) 语法:uniq  [选项]  文件 选项 -c或--count 在每列旁边显示该行重复出现的次数 -d或--repeat 仅 ...

  8. CentOS 6.9使用Setup配置网络(解决dhcp模式插入网线不自动获取IP的问题)

    说明:dhcp模式插入网线不自动获取IP是因为网卡没有激活,造成这种原因的,应该是安装系统时没有插入网线造成的. 解决方法: 修改网卡配置文件 vim /etc/sysconfig/network-s ...

  9. Word2010插入页码分节符

    不是分页符,分节符主要是为了插入前后两种不同类型的页码,比如前面查罗马数字,从目录开始插入阿拉伯数字.                 

  10. Oracle查询库中记录数大于2千万的所有表

    Oracle查询库中记录数大于2千万的所有表 假如当前用户拥有select any table权限,则可以使用下列sql语句: select table_name, num_rows from dba ...