所用的种子填充算法的:
void CMy08990093View::OnSeedfill()
{
// TODO: Add your command handler code here
CWindowDC dc(this);
int fill=RGB(0,255,0); //设定多边形填充的的颜色
int boundary=RGB(255,0,0); //设定多边形画笔的颜色
CPoint pt=s_point;
int x,y,p0=0,pmin,pmax;
//求多边形的最大最小值
for (int m=0;m<7;m++)
{
for (int n=0;n<7-m;n++)
{
if (spt[n].y<spt[n+1].y)
{
p0=spt[n].y;
spt[n]=spt[n+1];
spt[n+1]=p0;
}
}
}
pmax=spt[0].y,pmin=spt[6].y;
x=s_point.x;
y=s_point.y;
for (;y<pmax+1;y++)
{
int current=dc.GetPixel(x,y);
while ((current!=boundary)&&(current!=fill))
{
dc.SetPixel(x,y,fill);
x++;
current=dc.GetPixel(x,y);
}
x=s_point.x;
x--;
current=dc.GetPixel(x,y);
while ((current!=boundary)&&(current!=fill))
{
dc.SetPixel(x,y,fill);
x--;
current=dc.GetPixel(x,y);
}
x=s_point.x;
}
x=s_point.x;
y=s_point.y-1;
for (;y>pmin-2;y--)
{
int current=dc.GetPixel(x,y);
while((current!=boundary)&&(current!=fill))
{
dc.SetPixel(x,y,fill);
x++;
current=dc.GetPixel(x,y);
}
x=s_point.x;
x--;
current=dc.GetPixel(x,y);
while ((current!=boundary)&&(current!=fill))
{
dc.SetPixel(x,y,fill);
x--;
current=dc.GetPixel(x,y);
}
x=s_point.x;
}
}
但是填充后的结果没有把整个多边形填充完,而且执行之后就会造成死循环,不在响应其他的消息,望各位高手帮助解决一下,本人在线等答,万分感谢
双击鼠标左键,生成多边形
.先在多边形内部单击鼠标右键,选择种子,然后单击功能菜单实现填充
不是应该按上面的步骤来嘛,但是第二步,要先在多边形内部单击一下左键,然后再单击右键,这样再试试看