2012-05-23 2 views
5

BitmapData의 크기를 200, 400, 600 및 800과 같이 다른 크기로 조정하고 싶습니다.AS3 - Scale BitmapData

어떻게 할 수 있습니까?

답변

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

비트 맵 객체의 너비와 높이를 설정하면 해당 이미지의 크기가 조절되므로 비트 맵 데이터로 비트 맵을 만든 다음 너비/높이를 사용하여 비트 맵을 만들거나 크기 조정 값을 사용하려면 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?