//边界填充算法
#include "stdafx.h"
#include <graphics.h>
#include <math.h>
#include <iostream>
using namespace std;
//4-连通边界填充算法
int BoundaryFill(int x,int y)
{
int c=0;
c=getpixel(x,y);
if(c!=WHITE)
putpixel(x,y,WHITE);
if(c==WHITE)
return 0;
for(int i=0;i<100000;i++); //延时作用
BoundaryFill(x+1,y);
BoundaryFill(x-1,y);
BoundaryFill(x,y+1);
BoundaryFill(x,y-1);
}
int main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver,&gmode,"");//初始化图形界面
int points1[]={10,10,70,10,70,50,60,40,40,60,30,20,20,30}; //点的坐标,与效果图相反,逻辑原点坐标为左上角
int points2[14];
for(int i=0;i<14;i++)
points2[i]=points1[i]*2;
drawpoly(7,points2); //画一个给定若干点所定义的多边形
BoundaryFill(40*2,20*2);//种子填充算法
getchar();
closegraph();
return 0;
}
运行结果: