5

BitmapData を 200、400、600、800 などのさまざまなサイズにスケーリングしたいと思います。

それを行う良い方法は何ですか?

4

2 に答える 2

11

を直接スケーリングすることはできません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);

    }
}
}
于 2012-05-24T10:10:34.470 に答える
2

ビットマップ オブジェクトの幅と高さを設定するとそのイメージがスケーリングされるため、bitmapData を使用してビットマップを作成し、幅/高さを使用してスケーリングするか、スケーリング値を使用する場合は scaleX/Y を使用します。

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

ビットマップ オブジェクトを使用せず、BitmapData を直接スケーリングしたくない場合は 、BitmapData オブジェクトのサイズを変更する最良の方法は何ですか?

于 2012-05-23T14:43:22.553 に答える