带有“图层”的Floodfill

时间:2010-05-01 01:57:33

标签: c++ algorithm flood-fill bounds

我想要的是创建一个带图层的矢量绘图程序,但为了避免使用透明度/不透明度,我想将每个形状从最低层到最高层绘制到一个位图上。为了填充,我想填充形状。我的问题是,如果我有一个被绘制然后填充的形状,那么下一个形状会重叠一点,并且新形状的边框与另一个形状的边界相同,然后填充将仅部分填充它。有没有一种给定形状坐标的方法,我可以找到填充的实际边界而不是使用目标颜色? 感谢

1 个答案:

答案 0 :(得分:1)

Floodfill无法满足您的需求...除非您执行以下操作之一:

选项1:在内存的其他部分使用floodfill,然后使用遮罩将形状blit到你想要的位置,因为你说你想避免透明度,这个选项有点划掉...... (尽管如此,我仍然推荐它,真的,如果要检查是否要复制该像素,那么制作它并不难)

选项2:仅使用基本形状,您可以轻松填充而不使用填充,使用水平线填充它们,起点和终点位于形状的每条线的两个终点像素之间。这将是方块,圆圈......

选项3:与选项2相同,但允许任意三角形。

选项4:与3相同,但允许您读取点列表,并使用多个矩形组合对象,这样您就可以制作任意形状(甚至是凸形)。那个很难正确实现(特别是凸形)。