代码之家  ›  专栏  ›  技术社区  ›  artemb

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

  •  5
  • artemb  · 技术社区  · 15 年前

    flex 3、actionscript 3、flash player 9。

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

    有什么办法吗?

    2 回复  |  直到 15 年前
        1
  •  9
  •   artemb    15 年前

    使用以下代码:

            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");
    
        2
  •  1
  •   Amarghosh    15 年前

    对于矩形,可以使用FillRect。对于一个多边形,你必须以完全不同的颜色(与位图中的其他颜色不同)绘制多边形,并使用泛光填充-但我不知道如何绘制多边形。位图数据类中没有绘制线条的方法。另一种选择是编写自己的逻辑,在多边形内查找像素,并使用setpixel32方法将alphas设置为零。

    这个 wikipedia page 描述查找点是否在给定多边形内的算法。你可能会发现它很有用。