Published in: Other
/*ただ複製(draw())するだけだと、画像のサイズ等が違ってしまうので、 切り抜き後のビットマップを受ける、新しいビットマップデータを 切り抜き後のサイズで作成し、そこにRectangleでサイズをMatrixで位置を調整しつつ、draw()する。 画像を切り抜きつつ、新しいビットマップデータを作る*/ import flash.display.*; import flash.geom.*; // オリジナルのビットマップ // ライブラリにID:photoがあるとする var originalBmp:BitmapData = BitmapData.loadBitmap('photo'); // 切り抜き関数を使って、新しいビットマップを作る var clippedBmp:BitmapData = clipBitmap( originalBmp, 120, 120, 200, 200 ); // クリップ後のビットマップを配置 attachBitmap( clippedBmp, 1 ); // 一応オリジナル画像をメモリから解放 originalBmp.dispose(); /** * ビットマップをクリッピングして新しいビットマップを作る * @param source BitmapData オリジナルのビットマップ * @param x Number 切り抜きX座標 * @param y Number 切り抜きY座標 * @param w Number 切り抜き横幅 * @param h Number 切り抜き縦幅 * @return BitmapData 切り抜かれた後のビットマップデータ */ function clipBitmap( source:BitmapData, x:Number, y:Number, w:Number, h:Number ):BitmapData { // 切り抜き用の矩形 var clipRect:Rectangle = new Rectangle( 0, 0, w, h ); // 切り抜き位置調整用のマトリックス var clipMatrix:Matrix = new Matrix(); // 切り抜き位置をマイナスにずらす clipMatrix.translate( -x, -y ); // 切り抜き後のビットマップデータ var clipBmp:BitmapData = new BitmapData( w, h ); // オリジナル画像をクリッピング情報を元にdraw() clipBmp.draw( source, clipMatrix, new ColorTransform(), null, clipRect ); return clipBmp; }
You need to login to post a comment.
