边界填充算法
基本上,边界填充算法是从一个内点开始检测相邻位置的颜色,如果检测位置不是该边界颜色,就将他改为填充颜色,并检测其相邻位置。这个过程延续到检测区域边界颜色范围内的所有像素为止。
从一个当前检测位置处理相邻像素的两种方法

4-连通区域
检测当前像素的上、下、右、左的4个像素
8-连通区域
检测当前像素的上、下、右、左的4个像素以及4个对角元素
由于上述两种方法需要大量的堆栈空间来存储相邻点,因而通常使用更为有效的方法,沿扫描线填充水平像素区段,从而代替连通的相邻点。然后,仅需将每个水平像素区域的起始位置放进堆栈,而不需将所有当前位置周围的未处理相邻位置都放进堆栈,如果使用找各种方法,将从初始内部点开始,首先填充该像素所在扫描行的连续像素区段,然后将相邻扫描线傻瓜各段的起始位置放入堆栈,这些水平段分别又像素包围,接着逐步从堆栈顶部取出一个开始点,并重复上述过程
泛滥填充算法
有时,我们要对一个不是单一颜色边界定义的区域进行填充,这时可以通过替换指定的内部颜色而不是搜索边界颜色值来对该区域填色
从指定的内部点x,y开始,将期望的填充颜色赋给所有当前设置为给定内部颜色的像素,假如所要涂色的区域具有多种内部颜色,可以重新设置像素值,从而使所有的内部点具有相同的颜色,然后使用连通方法,逐步连通各像素位置,直到所有内部点已被涂色