146.矩形区域的颜色填充
【摘要】
#include <stdio.h>
#include <graphics.h>
void main()
{int gd=VGA,gm=VGALO;
/*registerbgidriver(EGAVGA_driver);*/
initgraph(&gd,&gm,"e:\\tc\\bgi");...
#include <stdio.h>
#include <graphics.h>
void main()
{int gd=VGA,gm=VGALO;
/*registerbgidriver(EGAVGA_driver);*/
initgraph(&gd,&gm,"e:\\tc\\bgi"); /*设置图形模式*/
setcolor(YELLOW);
rectangle(105,105,175,135); /*画正方形*/
full(120,120,YELLOW); /*调填充函数*/
getch(); /*等待*/
closegraph(); /*关闭图形模式*/
}
#define DELAY_TIME 5/*填充点后延长的时间,用来观看填充的过程,单位:毫秒*/
int full(int x,int y,int color1)/*递归的填充函数*/
{int color2,x1,y1;
x1=x; y1=y;
if(kbhit())return;
color2=getpixel(x1,y1); /*读(x,y)点颜色值*/
if(color2!=color1) /*判断是否与填充色相等*/
{putpixel(x1,y1,color1); /*画点(x1,y1) */
delay(DELAY_TIME);
getch();
x1++;
full(x1,y1,color1); /*递归调用*/
}
x1=x; y1=y;
color2=getpixel(x1-1,y1); /*读(x1-1,y1)点颜色值*/
if(color2!=color1) /*判断是否与填充色相等*/
{putpixel(x1,y1,color1); /*画点(x1,y1) */
delay(DELAY_TIME);
x1--;
full(x1,y1,color1); /*递归调用*/
}
x1=x; y1=y;
color2=getpixel(x1,y1+1); /*读(x1,y1+1)点颜色值*/
if(color2!=color1) /*判断是否与填充色相等*/
{putpixel(x1,y1,color1); /*画点(x1,y1) */
delay(DELAY_TIME);
y1++;
full(x1,y1,color1); /*递归调用*/
}
x1=x; y1=y;
color2=getpixel(x1,y1-1); /*读(x1,y1+1)点颜色值*/
if(color2!=color1) /*判断是否与填充色相等*/
{putpixel(x1,y1,color1); /*画点(x1,y1) */
delay(DELAY_TIME);
y1--;
full(x1,y1,color1); /*递归调用*/
}
return;
}
文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_41055260/article/details/124665826
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)