我有一个Sprite,其形状为凸多边形(非矩形) 如果我使用以下方式拍摄快照:
var bmd:BitmapData = new BitmapData(width,height);
bmd.draw(someSprite,someMatrix,null,null,null);
我得到的图像是这样的:
在这张图片中,我自己添加了绿色边框,只是为了显示
图像的尺寸。
所以,当我拍摄凸多边形精灵的快照时 使用BitmapData类的draw方法,我得到一个红色三角形 内部有一个白色椭圆,对于其他区域,我得到了像素。
我想用蓝色像素替换那些外部白色像素。
我该怎么做?
答案 0 :(得分:0)
您可以使用BitmapData.floodFill()
方法。
它就像“油漆桶工具”一样工作。
剩下的就是在要替换的白色区域内找到一个像素。 例如,如果你确定总是在精灵周围存在白色边框,你可以假设左上角的像素是一个完美的点。这样做可以解决问题:
bmd.floodFill(0, 0, 0xff0000ff); //note that the color is in ARGB format.
如果你不能认为这个问题不是填充白色区域,而是找到它。我们需要更多地了解您的问题。 我们不能只是遍历边界寻找白色像素,因为它们实际上可能是中间的椭圆,例如。