2011-03-21 71 views
1

我正在使用copyPixels將較大位圖的一部分複製到較小的位圖以用於單個動畫片段。但是,在Bitmaps的邊緣周圍仍然有一些額外的空白空間和角落。如何將位圖中的白色設置爲透明以便我看不到這些難看的邊緣?如何將某種顏色設置爲透明?

回答

4

可以使用BitmapData.threshold方法。此代碼在藍色背景上創建一個帶有紅色正方形的BitmapData,然後使用閾值方法使紅色像素透明。

var inputBitmapData:BitmapData = new BitmapData(200, 200, true, 0xFF0000FF); 
inputBitmapData.fillRect(new Rectangle(10, 10, 180, 180), 0xFFFF0000); 

var outputBitmapData:BitmapData = new BitmapData(200, 200, true); 
var destPoint:Point = new Point(0, 0); 
var sourceRect:Rectangle = new Rectangle(0, 0, outputBitmapData.width, outputBitmapData.height); 
var threshold:uint = 0xFFFF0000; 
var color:uint = 0x00000000; 
outputBitmapData.threshold(inputBitmapData, sourceRect, destPoint, "==", threshold, color, 0xFFFFFFFF, true); 

var input:Bitmap = new Bitmap(inputBitmapData); 
addChild(input); 

var output:Bitmap = new Bitmap(outputBitmapData); 
output.x = input.x + input.width + 10; 
addChild(output); 
+0

這個功能看起來非常靈活。我會嘗試一下,感謝這個例子! – whitneyz 2011-03-22 00:36:47

+0

工程太棒了!謝謝! – whitneyz 2011-03-23 01:43:33

0

可以使用BitmapData.colorTransform()draw(),而不是copyPixels()調整顏色有

+0

啊,我明白了。但是,我將如何指定顏色白色,這是0xFFFFFF被渲染爲透明?我是否要編輯alphaOffset或alphaMultiplier? – whitneyz 2011-03-21 20:20:34

相關問題