光栅图形学-区域填充-递归
区域是指已经表示成点阵形式的填充图形,它是像素的几何。区域可采用内点表示和边界表示两种表现形式。边界表示中,区域边界着同一种颜色。区域填充指先将区域的一点赋予指定的颜色,然后将该颜色扩展到整个区域的过程。
边界表示的四连通区域的递归填充算法:若原四连通区域用的是边界表示,boundarycolor表示边界的原色。
运行结果:
填充前:
填充后:
源代码:
void CDrawView::BoundaryFill4(int x,int y,int boundarycolor,int newcolor)
{
//边界表示的四连通区域的递归填充算法
CClientDC dc(this);
int color=dc.GetPixel(x,y);
if(color!=newcolor&&color!=boundarycolor) //不是新颜色也不是边界颜色 填充
{
dc.SetPixel(x,y,newcolor);
BoundaryFill4(x,y+1,boundarycolor,newcolor); //分别填充另外相邻四个方向
BoundaryFill4(x,y-1,boundarycolor,newcolor);
BoundaryFill4(x-1,y,boundarycolor,newcolor);
BoundaryFill4(x+1,y,boundarycolor,newcolor);
}
}