区域填充算法
llyzq 2006-05-09 09:45:03 我用MFC做的
void CMyView::FloodFill4(CDC* pDC, int x, int y, COLORREF oldColor, COLORREF newColor)
{
if(x <= 100 || y <= 100 || x >=300 || y >= 400)
return;
if(pDC && pDC->GetPixel(x,y)==oldColor)
{
pDC->SetPixel(x,y,newColor);
FloodFill4(pDC,x,y+1,oldColor,newColor);
FloodFill4(pDC,x,y-1,oldColor,newColor);
FloodFill4(pDC,x-1,y,oldColor,newColor);
FloodFill4(pDC,x+1,y,oldColor,newColor);
}
}
void CMyView::Draw(CDC* pDC)
{
CBrush brush,*oldbrush;
brush.CreateSolidBrush(RGB(128,128,128));
oldbrush = pDC->SelectObject(&brush);
pDC->Rectangle(100,100,300,400);
pDC->SelectObject(oldbrush);
CBrush brush1;
brush1.CreateSolidBrush(RGB(128,0,128));
oldbrush = pDC->SelectObject(&brush1);
pDC->Rectangle(150,150,180,320);
pDC->Rectangle(200,200,250,380);
pDC->SelectObject(oldbrush);
}
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
Draw(pDC);
FloodFill4(pDC,120,120,RGB(128,128,128),RGB(255,0,0));
}
可是不能实现...