Egret中颜色矩阵和滤镜的使用与介绍

一:颜色矩阵

颜色矩阵说明

颜色矩阵数据说明:
实际的颜色值由下面的公式决定:
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];

公式中 srcR、srcG、srcB、srcA 表示原始显示对象的像素值, a 是颜色矩阵。新的红绿蓝和alpha通道实际由颜色矩阵和原始图片的像素值同时决定。

举证使用实例

与原来一样:

var colorMatrix = [
	1,0,0,0,0,
	0,1,0,0,0,
	0,0,1,0,0,
	0,0,0,1,0
];

红色偏移量:

var colorMatrix = [
	1,0,0,0,100,
	0,1,0,0,0,
	0,0,1,0,0,
	0,0,0,1,0
];

绿色加倍:

var colorMatrix = [
	1,0,0,0,0,
	0,2,0,0,0,
	0,0,1,0,0,
	0,0,0,1,0
];

红色决定蓝色值
如果要使结果图像中的蓝色与原图的红色数量相等,将colorMatrix[10]设为1, colorMatrix[12]设为0 ,即结果的蓝色值完全由原始的红色值决定:

var colorMatrix = [
	1,0,0,0,0,
	0,1,0,0,0,
	1,0,0,0,0,
	0,0,0,1,0
];

增加亮度
增加亮度的最简单途径是给每个颜色值添加相同的偏移量。

var colorMatrix = [
	1,0,0,0,100,
	0,1,0,0,100,
	0,0,1,0,100,
	0,0,0,1,0
];

egret中的使用

颜色矩阵滤镜:colorMatrixFilter(4行5列的多维矩阵共20个元素)
灰度化::

var hero:egret.Bitmap = new egret.Bitmap();
hero.texture = RES.getRes("hero_png");
this.addChild(hero);
//颜色矩阵数组
var colorMatrix = [
    0.3,0.6,0,0,0,
    0.3,0.6,0,0,0,
    0.3,0.6,0,0,0,
    0,0,0,1,0
];
var colorFlilter = new egret.ColorMatrixFilter(colorMatrix);
hero.filters = [colorFlilter];

//获得数组。

var test = colorFlilter.matrix;
//修改数组中的值。
test[4] = 100;  
//重置矩阵。
colorFlilter.matrix = test;

二:egret中的滤镜

光晕滤镜(周围一层光晕):

var img:egret.Bitmap;
//创建滤镜:
var color:number = 0x33CCFF;        /// 光晕的颜色,十六进制,不包含透明度
var alpha:number = 0.8;             /// 光晕的颜色透明度,是对 color 参数的透明度设定。有效值为 0.0 到 1.0。例如,0.8 设置透明度值为 80%。
var blurX:number = 35;              /// 水平模糊量。有效值为 0 到 255.0(浮点)
var blurY:number = 35;              /// 垂直模糊量。有效值为 0 到 255.0(浮点)
var strength:number = 2;            /// 压印的强度,值越大,压印的颜色越深,而且发光与背景之间的对比度也越强。有效值为 0 到 255。暂未实现
var quality:number = egret.BitmapFilterQuality.HIGH;        /// 应用滤镜的次数,建议用 BitmapFilterQuality 类的常量来体现
var inner:boolean = false;            /// 指定发光是否为内侧发光,暂未实现
var knockout:boolean = false;            /// 指定对象是否具有挖空效果,暂未实现
var glowFilter:egret.GlowFilter = new egret.GlowFilter( color, alpha, blurX, blurY,
    strength, quality, inner, knockout );
//最后对位图对象应用发光滤镜:
img.filters = [ glowFilter ];

在 Egret 中,通过 BlurFilter 类设置模糊滤镜。

var hero:egret.Bitmap = new egret.Bitmap();
hero.texture = RES.getRes("hero_png");
this.addChild(hero);
var blurFliter = new egret.BlurFilter( 1 , 1);
hero.filters = [blurFliter];
BlurFilter 有两个参数,即为 x 、y 方向的模糊度。值越大效果越模糊。
可以使用hero.filters = [blurFliter,colorFlilter]; 模糊和颜色矩阵滤镜效果。多个效果同时生效。

投影滤镜

var img:egret.Bitmap;
//创建滤镜,在定义局部变量时,对每一个参数的含义在注释部分进行简要的说明:
var distance:number = 6;           /// 阴影的偏移距离,以像素为单位
var angle:number = 45;              /// 阴影的角度,0 到 360 度
var color:number = 0x000000;        /// 阴影的颜色,不包含透明度
var alpha:number = 0.7;             /// 光晕的颜色透明度,是对 color 参数的透明度设定
var blurX:number = 16;              /// 水平模糊量。有效值为 0 到 255.0(浮点)
var blurY:number = 16;              /// 垂直模糊量。有效值为 0 到 255.0(浮点)
var strength:number = 0.65;                /// 压印的强度,值越大,压印的颜色越深,而且阴影与背景之间的对比度也越强。有效值为 0 到 255。暂未实现
var quality:number = egret.BitmapFilterQuality.LOW;              /// 应用滤镜的次数,暂无实现
var inner:boolean = false;            /// 指定发光是否为内侧发光
var knockout:boolean = false;            /// 指定对象是否具有挖空效果
var dropShadowFilter:egret.DropShadowFilter =  new egret.DropShadowFilter( distance, angle, color, alpha, blurX, blurY,
    strength, quality, inner, knockout );
//最后对位图对象应用投影滤镜:
img.filters = [ dropShadowFilter ];

三:结尾

思了思了,恋了恋了!!

于是-~~-可以不回头+=+地逆风飞翔
不怕心头有雨$v$眼底有霜@@@@@
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值