2009-10-11 12 views
5

フレックス3、ActionScript 3、Flash Player 9BitmapDataオブジェクト内の領域を消去するにはどうすればよいですか?

私はBitmapDataオブジェクトにピクチャを持っています。そして一連のポイント。ポイントで指定されたポリゴンの内側にある画像の部分を消してしまいます。つまり、ポイントで指定されたポリゴンを描き、透明にします。

どうすればいいですか?

答えて

9

それは次のコードでの作業ガット:

 var shape:Shape = new Shape(); 
     shape.graphics.beginFill(0x000000, 1); // solid black 
     shape.graphics.moveTo(points[0].x, points[0].y); 

     points.forEach(function (p:Point, i:int, a:Array):void { 
       shape.graphics.lineTo(p.x, p.y); 
      }); 
     shape.graphics.endFill(); 
     data.draw(shape, null, null, "erase"); 
+0

+1それは良いものです。あなた自身の答えを受け入れることを検討して、この質問がリストに表示されるようにしてください。 – Amarghosh

+0

うん...いいね。私はあなたがそれを行うことができるかは知らなかった:-p –

+0

"GPUレンダリングではサポートされていません。" - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BlendMode.htmlこのアプローチは、同様のケースではうまくいかないかもしれません。 – PeteB

1

長方形の場合は、fillRectを使用できます。ポリゴンについては、ポリゴンを(ビットマップの他の色よりも)完全に異なる色で描画し、floodFillを使用する必要がありますが、ポリゴンの描画方法はわかりません。行を描画するためのビットマップデータクラスのメソッドはありません。別のオプションは、ポリゴン内のピクセルを見つけるための独自のロジックを記述し、setPixel32メソッドを使用してalphasをゼロに設定することです。

このwikipedia pageには、ポイントが特定のポリゴンの内側にあるかどうかを検出するアルゴリズムが記述されています。それが役に立つかもしれません。

+0

は、他のオプションはありますか?ポリゴンをマスキングするのと同じです。私はそれが可能だと思う、ちょうど方法がわからない – artemb

関連する問題