由于区域填充算法有多种实现方式,下面是一种基于递归的简单实现:

#include <graphics.h>

void fill_area(int x, int y, int color) { if (getpixel(x, y) != color) { // 如果当前点颜色不是要填充的颜色 putpixel(x, y, color); // 填充当前点 fill_area(x - 1, y, color); // 左边点 fill_area(x + 1, y, color); // 右边点 fill_area(x, y - 1, color); // 上面点 fill_area(x, y + 1, color); // 下面点 } }

int main() { initgraph(640, 480); setbkcolor(WHITE); // 设置背景颜色为白色 cleardevice(); // 清屏 rectangle(100, 100, 300, 300); // 画一个矩形 fill_area(200, 200, RED); // 从中心点开始填充红色 getch(); closegraph(); return 0; }

在这个示例中,我们首先画了一个矩形,然后从矩形中心点开始填充红色。fill_area函数会递归地向四个方向填充,直到遇到与要填充颜色相同的像素点为止。在每个点填充之前,需要检查它的颜色是否与目标颜色相同,以防止无限递归。

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

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

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