package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.geom.Point; import flash.geom.Rectangle; public class getColorBoundsRect extends Sprite { private var nb:BitmapData; public function getColorBoundsRect(){ var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFcc); var rect:Rectangle = new Rectangle(0, 0, 80, 20); bmd.fillRect(rect, 0x3168D5); var bm11:Bitmap = new Bitmap(bmd); addChild(bm11); var maskColor:uint = 0xFFFFFF; var color:uint = 0x3168D5; //如果该值设置为 true,则返回color图像中颜色值的范围。 var redBounds1:Rectangle = bmd.getColorBoundsRect(maskColor, color, true); trace(redBounds1); // (x=0, y=0, w=80, h=20) var bitmapData:BitmapData = new BitmapData(redBounds1.width,redBounds1.height,true); bitmapData.copyPixels(bmd, redBounds1, new Point(0,0)); var bm:Bitmap = new Bitmap(bitmapData); bm.x =bm.y=100; addChild(bm); //如果该值设置为 false,则还回0x3168D5以外的区域 ARGB 颜色 var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false); trace(notRedBounds); // (x=0, y=20, w=80, h=20) var bitmapData2:BitmapData = new BitmapData(notRedBounds.width,notRedBounds.height,true); bitmapData2.copyPixels(bmd, notRedBounds, new Point(0,0)); var bm1:Bitmap = new Bitmap(bitmapData2); bm1.x =bm1.y=200; addChild(bm1); } } } package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLRequest; public class getColorBoundsRectPNG extends Sprite { private var _loader:Loader = new Loader( ); public function getColorBoundsRectPNG( ) { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); _loader.load(new URLRequest("p_1.png")); } public function onComplete(event:Event):void { var image:Bitmap = Bitmap(_loader.content); addChild(image); var srcBitmapData:BitmapData = image.bitmapData; //如果该值设置为 false,则还回0x00000000(白色透明值)以外的区域 ARGB 颜色 var srcRectangle:Rectangle = srcBitmapData.getColorBoundsRect(0xFF000000, 0x00000000, false); var dstBitmapData:BitmapData = new BitmapData(srcRectangle.width,srcRectangle.height,true); dstBitmapData.copyPixels(srcBitmapData, srcRectangle, new Point(0,0)); var dstBitmap:Bitmap = new Bitmap(dstBitmapData); trace(dstBitmap.width,dstBitmap.height); addChild(dstBitmap); } } }