海賊王をめざす男 マツです。こんにちは。

DisplayObject をキャプチャすることって結構あるのですが、Flex には便利な ImageSnapshot があるのでそれを使用します。



ImageSnapshot.captureBitmapData(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):BitmapData

BitmapData として UI コンポーネントの生のスナップショットを取得するユーティリティメソッド。



ImageSnapshot.captureImage(source:IBitmapDrawable, dpi:Number = 0, encoder:IImageEncoder = null, scaleLimited:Boolean = true):ImageSnapshot

コンポーネントのスナップショットを取得し、それを特定の解像度(dpi 単位)に拡大 / 縮小し、特定のイメージ形式にエンコードするユーティリティメソッド。



ImageSnapshot.encodeImageAsBase64(snapshot:ImageSnapshot):String

ImageSnapshot を Base-64 でエンコードされた String に変換するユーティリティメソッド。この String は、XML などのテキストベースの直列化形式で転送可能。

Image や SWFLoader コンポーネントに Bitmap を addChild しても Image コンポーネントの width と height は、0 のままなので注意が必要です。思い通りのレイアウトに配置するための工夫が必要になります。


ImageSnapshot - ActionScript 3.0 言語およびコンポーネントリファレンス
http://livedocs.adobe.com/flex/3_jp/langref/mx/graphics/ImageSnapshot.html

HTML5飯