Flood Fill アルゴリズムは、最も一般的に使用されるアルゴリズムです。以下は、Hearn Baker の第 3 版による私の古い大学の教科書「OpenGL を使用したコンピューター グラフィックス」からそのまま引用した単純なバージョンです。
void floodFill4 (int x, int y, int fillColor, int interiorColor)
{
int color;
/* Set current color to fillColor, then perform the following operations */
getPixel(x, y, color);
if (color == interiorColor)
{
setPixel(x,y); // Set color of pixel to fillColor.
floodFill4(x + 1, y, fillColor, interiorColor);
floodFill4(x - 1, y, fillColor, interiorColor);
floodFill4(x, y + 1, fillColor, interiorColor);
floodFill4(x, y - 1, fillColor, interiorColor);
}
}
ただし、大きな画像の場合、上記の方法では、ピクセルごとに再帰するため、スタック オーバーフロー エラーが発生する可能性があります。多くの場合、このアルゴリズムは、ピクセルの行を塗りつぶすときに反復を使用してから、上下の行を再帰的に塗りつぶすように変更されます。@kasperjj が述べたように、ウィキペディアにはこれに関する良い記事があります。