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