使用 C 图形的洪水填充算法
cserver side programmingprogramming更新于 2025/4/22 5:52:17
概念
对于给定的矩形,我们的任务是应用洪水填充算法填充此矩形。
输入
rectangle(left = 50, top = 50, right= 100, bottom = 100) floodFill(a = 55, b = 55, NewColor = 12, OldColor = 0)
输出
方法
// 一个递归函数,用新颜色"NewColor"和floodFill(a, b, NewColor, OldColor)替换"(a, b)"处的先前颜色"OldColor"和(a, b)的所有周围像素
如果a或b在屏幕外,则返回。
如果getpixel(a, b)的颜色与OldColor相同,则
Recur for top, bottom, right and left.
floodFill(a+1, b, NewColor, OldColor);<
floodFill(a-1, b, NewColor, OldColor);
floodFill(a, b+1, NewColor, OldColor);
floodFill(a, b-1, NewColor, OldColor);
示例
// 显示使用洪水填充算法填充多边形的程序 // 算法 #include <graphics.h> #include <stdio.h> // 描述洪水填充算法 void flood(int x1, int y1, int new_col, int old_col){ // 检查当前像素是否为 old_color if (getpixel(x1, y1) == old_col) { // 用新颜色放置新像素 putpixel(x1, y1, new_col); // 显示底部像素填充的递归调用 flood(x1 + 1, y1, new_col, old_col); //显示顶部像素填充的递归调用 flood(x1 - 1, y1, new_col, old_col); // 显示右侧像素填充的递归调用 flood(x1, y1 + 1, new_col, old_col); // 显示左侧像素填充的递归调用 flood(x1, y1 - 1, new_col, old_col); } } int main(){ int gd1, gm1 = DETECT; // 初始化图形 initgraph(&gd1, &gm1, ""); //显示矩形坐标 int top1, left1, bottom1, right1; top1 = left1 = 50; bottom1 = right1 = 300; // 显示用于打印矩形的矩形 rectangle(left1, top1, right1, bottom1); // 填充起始坐标 int x1 = 51; int y1 = 51; // 显示要填充的新颜色 int newcolor = 12; // 显示要替换的旧颜色 int oldcolor = 0; // 调用填充矩形 flood(x1, y1, newcolor, oldcolor); getch(); return 0; }