Flex 3,ActionScript 3,Flash player 9.
我在BitmapData对象中有一张图片。还有一系列要点。我需要擦除由点指定的多边形内部的图片部分。换句话说,绘制由点指定的多边形并用透明度填充它。
关于如何做到的任何想法?
答案 0 :(得分: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");
答案 1 :(得分:1)
对于矩形,您可以使用fillRect。对于多边形,您将必须以完全不同的颜色(比位图中的其他颜色)绘制多边形并使用floodFill - 但我不知道如何绘制多边形。位图数据类中没有绘制线条的方法。另一个选择是编写自己的逻辑来查找多边形内的像素,并使用setPixel32方法将其alpha设置为零。
此wikipedia page描述了查找点是否在给定多边形内的算法。您可能会发现它很有用。