光栅图形学-区域填充-递归

版权声明:转载请注明出处。 https://blog.csdn.net/baidu_38304645/article/details/82917141

区域是指已经表示成点阵形式的填充图形,它是像素的几何。区域可采用内点表示和边界表示两种表现形式。边界表示中,区域边界着同一种颜色。区域填充指先将区域的一点赋予指定的颜色,然后将该颜色扩展到整个区域的过程。

边界表示的四连通区域的递归填充算法:若原四连通区域用的是边界表示,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);
   }
}

猜你喜欢

转载自blog.csdn.net/baidu_38304645/article/details/82917141