最近GraphicsPathと戯れているのですが、その関連で書いたGraphicsPathからシェイプの矩形を取得する関数を貼っておきます。滅多に使うことはないと思いますが、たまにはエントリーしてみるということで。
使い方は以下の通りです。
var gp:GraphicsPath = new GraphicsPath(...); ... var rect:Rectangle = getGraphicsPathRect( gp.commands, gp.data );
つまり描画と関係なく矩形をいただこうということです。DisplayObjectのgetRect()と同じようなノリです。
関数は以下の通りです。
function getGraphicsPathRect( commands:Vector., data:Vector. ):Rectangle { var minX:Number = Number.MAX_VALUE; var minY:Number = Number.MAX_VALUE; var maxX:Number = Number.MIN_VALUE; var maxY:Number = Number.MIN_VALUE; var di:int = 0; var len:int = commands.length; var px:Number = 0; var py:Number = 0; for ( var i:int = 0; i 0 && xt maxX ) maxX = xt; if ( xt 0 && yt maxY ) maxY = yt; if ( yt maxX ) maxX = px; if ( px maxY ) maxY = py; if ( py 非常にまんまなので、もっと最適化できそうな気がしますがとりあえずコレで暫。
関係ありませんが、Graphics.copyFrom()でパスデータを取得したい…何故できない…。