用C语言写一个区域填充算法,简洁易懂有注释
以下是一个简单的区域填充算法的C语言实现,采用递归方式实现:
#include <stdio.h>
#include <graphics.h>
void floodFill(int x, int y, int fillColor, int oldColor)
{
if(getpixel(x, y) == oldColor) // 如果当前像素点颜色与旧颜色相同
{
putpixel(x, y, fillColor); // 将填充颜色设置到当前像素点
floodFill(x + 1, y, fillColor, oldColor); // 向右填充
floodFill(x - 1, y, fillColor, oldColor); // 向左填充
floodFill(x, y + 1, fillColor, oldColor); // 向下填充
floodFill(x, y - 1, fillColor, oldColor); // 向上填充
}
}
int main()
{
int gd = DETECT, gm; // 初始化图形模式
initgraph(&gd, &gm, ""); // 打开图形窗口
rectangle(50, 50, 150, 150); // 画一个矩形
floodFill(75, 75, YELLOW, getpixel(75, 75)); // 填充矩形
getch(); // 等待用户按任意键
closegraph(); // 关闭图形窗口
return 0;
}
在上述代码中,floodFill()函数是关键。它采用四个参数:x和y是当前要填充的像素点坐标,fillColor是要填充的颜色,oldColor是原始颜色。如果当前像素点颜色与旧颜色相同,那么就将填充颜色设置到当前像素点,并递归调用floodFill()函数,向四个方向填充。如果当前像素点颜色与旧颜色不同,那么就不做任何事情,结束递归。
程序中使用了graphics.h库函数,它提供了一些基本的图形绘制函数和图形界面操作函数。initgraph()函数用于初始化图形环境,rectangle()函数用于画一个矩形,getpixel()函数用于获取像素点的颜色,putpixel()函数用于设置像素点的颜色,closegraph()函数用于关闭图形环境。
在绘制复杂图形时,区域填充算法可以用来填充闭合的区域,以达到填充特定颜色的目的。
原文地址: http://www.cveoy.top/t/topic/z7u 著作权归作者所有。请勿转载和采集!