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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值