我需要使用ActionScript 3.0为灰度渐变位图动态着色。渐变形成白色到黑色,最暗的颜色必须是0xFF0000,最亮的0xFFFFFF。尝试使用混合结果的paletteMap和ColorMatrixFilter,没有稳定的解决方案。
答案 0 :(得分:2)
var color:uint = 0xFF0000;
var r:uint = (color >> 16) & 0xFF;
var g:uint = (color >> 8) & 0xFF;
var b:uint = color & 0xFF;
var n:Number = 1/3;
var matrix:Array = new Array();
matrix = matrix.concat([n,n,n,0,r]);
matrix = matrix.concat([n,n,n,0,g]);
matrix = matrix.concat([n,n,n,0,b]);
matrix = matrix.concat([0,0,0,1,0]);
_bitmapData.applyFilter(_bitmapData, _bitmapData.rect, new Point(), new ColorMatrixFilter(matrix));'
答案 1 :(得分:1)
很可能使用ColorMatrixFilter,通过在红色通道上构建一个255偏移的矩阵(否则就是一个单位矩阵)。
此示例Document类假定FLA库具有720 x 480导出符号“GradientBMD”,它是flash.display.BitmapData子类:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.filters.*;
public class GreyscaleDemo extends Sprite
{
public function GreyscaleDemo()
{
var bmd:BitmapData = new GradientBMD(720,480);
var matrix:Array = new Array();
matrix = matrix.concat([1,0,0,0,255]);
matrix = matrix.concat([0,1,0,0,0]);
matrix = matrix.concat([0,0,1,0,0]);
matrix = matrix.concat([0,0,0,1,0]);
var colorFilter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
bmd.applyFilter(bmd, bmd.rect, new Point(0,0), colorFilter);
var bitmap:Bitmap = new Bitmap(bmd);
this.addChild(bitmap);
}
}
}
您还可以使用希望渐变渐变到的颜色(代替黑色)创建一个新的bitmapData,并使用BlendMode.ADD将其复制到渐变中:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.geom.Point;
public class GreyscaleDemo extends Sprite
{
public function GreyscaleDemo()
{
var bmd:BitmapData = new GradientBMD(720,480);
var bitmap:Bitmap = new Bitmap(bmd);
this.addChild(bitmap);
var bmd2:BitmapData = new BitmapData(720, 480, false, 0xFF0000);
bmd.draw(bmd2, null, null, BlendMode.ADD, bmd.rect,false);
}
}
}
答案 2 :(得分:1)
您也可以使用 blendMode =“luminosity”选项,而不是使用ColorMatrixFilter(在另一个答案中描述)。
我在ActionScript中有一篇关于灰度图像的博客文章可能有所帮助: http://flexdevtips.blogspot.com/2011/01/grayscale-images-progressbar-rating.html