2009-10-11 40 views
5

Flex 3,ActionScript 3,Flash player 9.如何擦除BitmapData對象中的區域?

我在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 2009-10-12 08:33:39

+0

Ooohhh ...很好。我不知道你可以這樣做:-p – 2009-10-12 11:23:31

+0

「在GPU渲染下不支持」。 - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BlendMode.html所以你可能會發現(和我一樣),這種方法對類似的情況不起作用。 – PeteB 2016-08-19 02:57:48

1

對於矩形,可以使用fillRect。對於多邊形,你必須以完全不同的顏色(比位圖中的其他顏色)繪製多邊形,並使用floodFill - 但我不知道如何繪製多邊形。位圖數據類中沒有方法繪製線條。另一種選擇是編寫自己的邏輯來查找多邊形中的像素,並使用setPixel32方法將其alpha設置爲零。

這個wikipedia page描述了算法來找出一個點是否在一個給定的多邊形內。你可能會覺得它很有用。

+0

是否還有其他選擇嗎?像掩蔽多邊形一樣。我想這是可能的,只是不知道如何 – artemb 2009-10-11 10:49:42