Flex 3,ActionScript 3,Flash player 9.如何擦除BitmapData對象中的區域?
我在BitmapData對象中有一張圖片。還有一些點數。我需要刪除由點指定的多邊形內的部分圖片。換句話說,繪製點指定的多邊形並填充透明度。
關於如何完成的任何想法?
Flex 3,ActionScript 3,Flash player 9.如何擦除BitmapData對象中的區域?
我在BitmapData對象中有一張圖片。還有一些點數。我需要刪除由點指定的多邊形內的部分圖片。換句話說,繪製點指定的多邊形並填充透明度。
關於如何完成的任何想法?
得到它用下面的代碼工作:
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");
對於矩形,可以使用fillRect。對於多邊形,你必須以完全不同的顏色(比位圖中的其他顏色)繪製多邊形,並使用floodFill - 但我不知道如何繪製多邊形。位圖數據類中沒有方法繪製線條。另一種選擇是編寫自己的邏輯來查找多邊形中的像素,並使用setPixel32方法將其alpha設置爲零。
這個wikipedia page描述了算法來找出一個點是否在一個給定的多邊形內。你可能會覺得它很有用。
是否還有其他選擇嗎?像掩蔽多邊形一樣。我想這是可能的,只是不知道如何 – artemb 2009-10-11 10:49:42
+1這是一個很好的。考慮接受你自己的答案,以便這個問題在列表中出現。 – Amarghosh 2009-10-12 08:33:39
Ooohhh ...很好。我不知道你可以這樣做:-p – 2009-10-12 11:23:31
「在GPU渲染下不支持」。 - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BlendMode.html所以你可能會發現(和我一樣),這種方法對類似的情況不起作用。 – PeteB 2016-08-19 02:57:48