计算机图形学 区域填充算法的实现
![计算机图形学 区域填充算法的实现](https://img.360docs.net/img1e/13l5ep8g51mhf9hem4h0w9h73s9l15wp-e1.webp)
![计算机图形学 区域填充算法的实现](https://img.360docs.net/img1e/13l5ep8g51mhf9hem4h0w9h73s9l15wp-b2.webp)
实验四区域填充算法的实现
班级 08信计2班学号 20080502088 姓名许延恒分数
一、实验目的和要求:
1、理解区域的表示和类型。
2、能正确区分四连通和八连通的区域
3、了解区域填充的实验原理。
4、利用C++实现区域填充的递归算法。
二、实验内容:
1假设在多边形内有一像素已知,由此出发利用连通性找到区域内所有像素。
2 取(x,y)为种子点将整个区域填充为新的颜色。
3 进行递归填充。
三、实验结果分析
区域填充属性包括填充样式,填充颜色和填充图案的类型。C语言中定义了某种图形后,即可调用-floodfill函数,对指定区域进行填充
. 程序代码
#include
#include
#include
void floodfill4(int x,int y,int oldcolor,int newcolor)
{
if(getpixel(x,y)==oldcolor)
{
putpixel(x,y,newcolor);
Sleep(1);
floodfill4(x,y+1,oldcolor,newcolor);
floodfill4(x,y-1,oldcolor,newcolor);
floodfill4(x-1,y,oldcolor,newcolor);
floodfill4(x+1,y,oldcolor,newcolor);
}
}
main()
{
int a,b,c,d,i,j;
int graphdriver=DETECT;
int graphmode=0;
initgraph(&graphdriver,&graphmode,"");
cleardevice();
setcolor(RED); rectangle(50,50,70,100); for(i=51;i<70;i++)
for(j=51;j<100;j++) {
putpixel(i,j,4);
}
a=57;
b=70;
c=4;
d=RGB(0,255,0); floodfill4(a,b,c,d); getch();
closegraph();
}