以下是一个简单的区域填充算法的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()函数是关键。它采用四个参数:xy是当前要填充的像素点坐标,fillColor是要填充的颜色,oldColor是原始颜色。如果当前像素点颜色与旧颜色相同,那么就将填充颜色设置到当前像素点,并递归调用floodFill()函数,向四个方向填充。如果当前像素点颜色与旧颜色不同,那么就不做任何事情,结束递归。

程序中使用了graphics.h库函数,它提供了一些基本的图形绘制函数和图形界面操作函数。initgraph()函数用于初始化图形环境,rectangle()函数用于画一个矩形,getpixel()函数用于获取像素点的颜色,putpixel()函数用于设置像素点的颜色,closegraph()函数用于关闭图形环境。

在绘制复杂图形时,区域填充算法可以用来填充闭合的区域,以达到填充特定颜色的目的。

用C语言写一个区域填充算法,简洁易懂有注释

原文地址: http://www.cveoy.top/t/topic/z7u 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录