現在、練習用の小さなペイント プログラムを作成しています。今、私はペイント バケツ ツール、つまりフラッド フィルを実行しようとしています。おもしろいことに、埋めなければならないピクセルの数が少ない場合は、すべて正常に機能します。塗りつぶしピクセルのヘイト数が多い場合、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;
}
これを解決する方法を知っている人はいますか?
ところで、これは私のプログラムの写真です: