(四连通区域填充示意图)
假设内部表示区域为G,其中的像素原有颜色为G0,需要填充的颜色为G1。
算法需要提供一个种子点(x,
y),它的颜色为G0。以四连通区域为例:具体算法如下(四连通区域)
1. 内部表示区域种子填充算法
Flood_Fill_4(x, y, G0, G1)
{
if(GetPixel(x,y) ==G0 ) // GetPixel(x,y) 返回(x,y)的颜色
{
SetPixel(x, y, G1); //将(x,y)的添上颜色G1
Flood_Fill_4(x-1, y, G0, G1);
Flood_Fill_4(x, y+1, G0, G1);
Flood_Fill_4(x+1, y, G0, G1);
Flood_Fill_4(x, y-1, G0, G1);
}
}
2. 边界表示区域种子填充算法Fill_Boundary_4_Connnected(x, y, BoundaryColor, InteriorColor)
// (x,y) 种子像素的坐标;
// BoundaryColor 边界像素颜色; InteriorColor 需要填充的内部像素颜色
{
if(GetPixel(x,y) != BoundaryColor && GetPixel(x,y)!= InteriorColor )
// GetPixel(x,y): 返回像素(x,y)颜色
{
SetPixel(x, y, InteriorColor); // 将像素(x, y)置成填充颜色
Fill_Boundary_4Connnected(x, y+1, BoundaryColor, InteriorColor);
Fill_Boundary_4Connnected(x, y-1, BoundaryColor, InteriorColor);
Fill_Boundary_4Connnected(x-1, y, BoundaryColor, InteriorColor);
Fill_Boundary_4Connnected(x+1, y, BoundaryColor, InteriorColor);
}
}