2012-05-23 38 views
5

Tôi muốn chia tỷ lệ BitmapData thành các kích thước khác nhau như 200, 400, 600 và 800.AS3 - Tỷ lệ BitmapData

Cách tốt nhất để làm điều đó là gì?

Trả lời

10

Bạn có thể không trực tiếp quy mô một BitmapData nhưng bạn có thể làm cho một bản sao thu nhỏ của nó. Dưới đây là ví dụ nhanh để mở rộng số 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

Đặt chiều rộng và chiều cao của đối tượng bitmap chia tỷ lệ hình ảnh đó, do đó hãy tạo bitmap bằng bitmapData của bạn rồi chia tỷ lệ bằng chiều rộng/chiều cao hoặc sử dụng scaleX/Y nếu bạn muốn sử dụng giá trị chia tỷ lệ.

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

Nếu bạn không muốn sử dụng một đối tượng bitmap và quy mô directy các BitmapData thấy điều này What is the best way to resize a BitmapData object?

Các vấn đề liên quan