我目前正在创建一个用于锻炼的小绘画程序。现在我正在尝试做油漆桶工具,或者换句话说,洪水填充。有趣的是:如果必须填充的像素数量很少,一切正常。如果填充像素的讨厌数量更高,它会给我一个 SO-Exception。这是我的代码:
private void FloodFill(Bitmap picture, int x, int y)
{
if (x <= 0 || y <= 0 || x >= DrawingPanel.Width || y >= DrawingPanel.Height)
{
return;
}
if (picture.GetPixel(x, y) != löschFarbe)
{
return;
}
if (picture.GetPixel(x, y) == löschFarbe)
{
picture.SetPixel(x, y, ColorButton.BackColor);
}
FloodFill(picture, x + 1, y);
FloodFill(picture, x, y + 1);
FloodFill(picture, x - 1, y);
FloodFill(picture, x, y - 1);
FloodFill(picture, x + 1, y + 1);
FloodFill(picture, x - 1, y + 1);
FloodFill(picture, x + 1, y - 1);
FloodFill(picture, x - 1, y - 1);
}
“löschFarbe”是被点击的颜色(将被其他颜色擦除/覆盖)
发生错误:如果我想填充完整的图片或很大的空间,我会在这里得到一个错误:
if (picture.GetPixel(x, y) != löschFarbe)
{
return;
}
任何人都知道我该如何解决这个问题?
顺便说一句,这是我的程序的图片: