1. 程式人生 > >光柵圖形學-區域填充-遞迴

光柵圖形學-區域填充-遞迴

區域是指已經表示成點陣形式的填充圖形,它是畫素的幾何。區域可採用內點表示和邊界表示兩種表現形式。邊界表示中,區域邊界著同一種顏色。區域填充指先將區域的一點賦予指定的顏色,然後將該顏色擴充套件到整個區域的過程。

邊界表示的四連通區域的遞迴填充演算法:若原四連通區域用的是邊界表示,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);
   }
}