递归形式的区域填充算法的效率实在是太低了(就是裸的dfs),导致图形大一点就会爆栈,没有很大的实用性。
代码如下:
void floodFill4(int x,int y,int i)
{
if (map[x, y] == false)
{
g.FillRectangle(p, new RectangleF(x, y, 1, 1));
map[x, y] = true;
floodFill4(x, y - 1,i+1);
floodFill4(x, y + 1,i+1);
floodFill4(x - 1,y,i+1);
floodFill4(x + 1, y,i+1);
}
}
效果如下: