C图形中的洪水填充困难

Flood fill difficulty in C graphics

(注意:我的大学让我用古老的 Turbo C 学习图形)

无论如何,我正在使用内置的填充算法来给水井和水桶上色。

我面临的问题是编译器将区域填充到边界颜色。但是,我想填写一个基本图形(此处为 elipse),而不管边界如何。 如何做到这一点?

我做了一些测试,如下所示,

图1,画好之前先把水桶装满,画得好就画过了蓝色
图2,洪水灌桶前画好,所以只灌了一部分

我的代码:

#include<graphics.h>
#include<stdio.h>
void well()
{
    ellipse(50,150,0,360,50,20); //Hole of the well
    arc(50,120,180,300,100);
    line(0,150,0,206);
    line(100,150,100,206);

    line(0,150,0,100);
    line(0,100,50,100);
    circle(50,100,10);

    setfillstyle(SOLID_FILL,RED);
    floodfill(20,170,WHITE);
}
void bucket(int j)
{
    ellipse(50,j,0,360,20,10);    //The Ellipse to be filled as blue
    line(40,j+40,60,j+40);
    line(40,j+40,30,j);
    line(60,j+40,70,j);
    setfillstyle(SOLID_FILL,BLUE);
    floodfill(50,j,WHITE);
}
void main()
{
    int gdriver = DETECT, gmode,i;
    initgraph(&gdriver, &gmode, "C:\TC\BGI");

    cleardevice();

    well();
    bucket(130);

    getch();
}

使用 fillellipse() 而不是 ellipse()。