2016-11-28 8 views
0

BitmapDataにピクセルをマージ、描画、コピーする方法がありますが、私が試してみてもビットマップインスタンスのサイズを変更しないように見えます。ここで作成したビットマップデータインスタンスのサイズを変更することはできますか?

は、私がこれまで持っているものです。

var initialWidth:int = 100; 
var initialHeight:int = 100; 
bitmapData = new BitmapData(initialWidth,initialHeight,true,0xFFFFFFFF); 
rectangle = new Rectangle(0, 0, newBitmapData.width, newBitmapData.height); 
bitmapData.merge(newBitmapData, rectangle, new Point(), 0, 0, 0, 0); 
bitmapData.drawWithQuality(newBitmapData, null, null, null, null, false, quality); 
bitmapData.drawWithQuality(LoaderInfo(event.currentTarget).loader, null, null, null, null, false, quality); 
bitmapData.copyPixels(newBitmapData, newBitmapData.rect, new Point()); 
bitmapData.merge(newBitmapData, null, new Point(), 0, 0, 0, 0); 

か、サイズをダウンクリップすることは可能でしょうか?

+0

'BtimpaData'を再作成せずに? – www0z0k

答えて

1

短い答えはいいえ、できません。完全を期すため

、ロジャーBraunsteinによってActionScript 3.0 Bibleから引用:

ビットマップのサイズは、構築時に固定されています。あなたは最初にそれを選ぶ必要があり、後でサイズを変更することはできません。

ビットマップデータのコピーを避けたい場合は、表示オブジェクトのマスクで表示領域を切り抜くことをおすすめします。

+0

OK。私はマスクで何もできません。私は別の解決策を考え出す必要があります。おかげで –

+0

あなたがそれを何度も何度もやっていない限り、あるいは画像が巨大でない限り、クリッピングのための画像をコピーしてもそれほど悪くないかもしれません... –

0

実質的にはいですが、実際はいいえ! ビットマップデータを再作成することはできますが、その幅と高さは固定されています。 ただし、クリップするかサイズを小さくする場合は、未使用のピクセルを透明にすることが可能です。

var bmd:BitmapData = new BitmapData(100, 100, true, 0x0); 
bmd.draw(s_omethin_g); 
bmd = clipDown(bmd, new Point(50,50)); 


function clipDown(_bmd:BitmapData, _size:Point):BitmapData { 
    var defaultBmdbound:bitmapData = new BitmapData(_bmd.width, _bmd.height, true, 0x0); 
    var smatrix:Matrix = new Matrix(); 
    smatrix.scale(_size.x/_bmd.width, _size.y/_bmd.height); 
    var resizedBmd:BitmapData = new BitmapData(_size.x, _size.y); 
    resizedBmd.draw(_bmd, smatrix); 
    var rect:Rectangle = new Rectangle(0,0,resizedBmd.width,resizedBmd.height); 
    defaultBmdbound.copyPixels(resizedBmd, rect, new Point()); 
    return defaultBmdbound; 
} 
+0

ありがとうございますが、BitmapDataを再作成できません。私は前もってサイズがありません。だから、サイズを取得するローダーにバイト配列データをロードしていましたが、ビットマップデータインスタンスのサイズを変更できないため、別の解決策が必要になります。 –

関連する問題