如何擦除BitmapData对象中的区域?

时间:2009-10-11 09:16:44

标签: flex flash actionscript graphics bitmap

Flex 3,ActionScript 3,Flash player 9.

我在BitmapData对象中有一张图片。还有一系列要点。我需要擦除由点指定的多边形内部的图片部分。换句话说,绘制由点指定的多边形并用透明度填充它。

关于如何做到的任何想法?

2 个答案:

答案 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描述了查找点是否在给定多边形内的算法。您可能会发现它很有用。