2010年12月16日 星期四

在BitmapData上套用Blur模糊濾鏡 - BitmapData.applyFilter()方法 + flash.filters.BlurFilter()建構函式




套用濾鏡前原圖




import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

//建構元件庫中 MyPhoto1 內嵌資源類別的實體,指定給BitmapData類型的變數。
//MyPhoto1類別的基底類別為flash.display.BitmapData類別
var bmd1:BitmapData = new MyPhoto1(0,0);

//Rectangle()建構函式
//public function Rectangle(x:Number = 0, y:Number = 0, width:Number = 0, height:Number = 0)
//x 和 y 參數指定左上角座標,width 和 height 參數指定矩形寬高,以建立新的 Rectangle 物件。
//若呼叫這個函數時沒有使用參數,則會建立 x、y、width 和 height 屬性都設為 0 的矩形。

//建立矩形物件,寬高設為550,400,以符合swf檔案及bmd1點陣圖資料寬高尺寸
//這矩行物件rect將作為applyFilter()之參數
var rect:Rectangle = new Rectangle(0, 0, 550, 400);

//Point(x:Number = 0, y:Number = 0)
//建立新的點。如果沒有將 x, y 參數傳遞給這個方法,則會在 (0,0) 建立一個點。
//Point 物件代表二維座標系統中的位置,其中 x 表示水平軸,而 y 表示垂直軸。
var pt:Point = new Point(0, 0);

//宣告blurX和blurY變數及其值,將做為applyFilter()的模糊參數
var blurX:Number = 40;
var blurY:Number = 5;

//
//BlurFilter()建構函式
//public function BlurFilter(blurX:Number = 4.0, blurY:Number = 4.0, quality:int = 1)

//BitmapFilterQuality.HIGH、BitmapFilterQuality.MEDIUM、BitmapFilterQuality.LOW
var filter:BlurFilter = new BlurFilter(blurX, blurY, BitmapFilterQuality.HIGH);

//applyFilter()方法
//public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
bmd1.applyFilter(bmd1, rect, pt, filter);

//建構Bitmap物件以顯示BitmapData物件
var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);



沒有留言: