算法
while stack–not–empty do
{pop(x,y);*从堆栈中取一种子象素*
savex:=x: *保存横坐标x的值*
while getpixel (FB, x, y), <> B–color do
{setpixel (FB, x, y, N–color); x:=x+1}
xright:=x–1 *保存线段的右端点*
x:=savex–1; {*向种子的左边填充*}
while getpixel (FB, x, y) <> B–color do
{ setpixel (FB, x, y, N–color); x:=x–1}
xleft:=x+1 *保存线段的左端点*
x:=xleft; y:=y+1;
while x<=xright do
{span–need–fill:=false;
while getpixel (FB,x,y)<>N–color and getpixel (FB,x,y), <> B–color do
{span–need–fill:=true; x:=x+1;}
if span–need–fill then
{push(x–1,y);右端点进栈
span-need–fill:=false;}
while(getpixel(FB,x,y)=B-color or
getpixel(FB,x,y)=N-color)and x<xright do
{x:=x+1}
} ; *在上一条扫描上检查完*
y:=y–2;
*在扫描线y–1上从左向右地检查位于区间
[xletft, xright]上的象素,其方法与在扫描线
y+1上检查的情况完全一样,故略去详情*
}*出栈完*
计算机图形学扫描线种子填充算法 来自淘豆网m.daumloan.com转载请标明出处.