2012-05-23 42 views

回答

10

不能直接縮放BitmapData,但你可以做它的一個比例克隆。 下面是縮放BitmapData的一個快速示例:

package { 
import flash.display.Bitmap; 
import flash.display.BitmapData; 
import flash.display.Sprite; 
import flash.geom.Matrix; 

import mx.core.BitmapAsset; 

public class Test extends Sprite { 


    [Embed(source="test.jpg")] 
    private var Image:Class; 

    public function Test() { 

     var originalBitmapData:BitmapData = BitmapAsset(new Image()).bitmapData; 

     function scaleBitmapData(bitmapData:BitmapData, scale:Number):BitmapData { 
      scale = Math.abs(scale); 
      var width:int = (bitmapData.width * scale) || 1; 
      var height:int = (bitmapData.height * scale) || 1; 
      var transparent:Boolean = bitmapData.transparent; 
      var result:BitmapData = new BitmapData(width, height, transparent); 
      var matrix:Matrix = new Matrix(); 
      matrix.scale(scale, scale); 
      result.draw(bitmapData, matrix); 
      return result; 
     } 

     var bitmapA:Bitmap = new Bitmap(originalBitmapData); 
     addChild(bitmapA); 

     var bitmapB:Bitmap = new Bitmap(scaleBitmapData(originalBitmapData, 0.5)); 
     addChild(bitmapB); 

    } 
} 
} 
2

設置位圖對象的寬度和高度會縮放該圖像,因此請使用bitmapData創建位圖,然後使用寬度/高度對其進行縮放,或者如果要使用縮放值,請使用scaleX/Y。

var bmp:Bitmap = new Bitmap(bmpData); 
bmp.width = 400; // or 600,800 etc. 
bmp.height = 400; 

如果你不想使用位圖對象,並directy規模的BitmapData看到這個 What is the best way to resize a BitmapData object?