Сложность заполнения Flood в C графике

(Примечание: мой колледж заставляет меня изучать графику в древнем Turbo C)

Во всяком случае я использую встроенный алгоритм для заливки, чтобы покрасить колодец и ведро.

Проблема, с которой я сталкиваюсь, заключается в том, что компилятор заполняет область до граничного цвета. Однако я хотел бы заполнить базовую фигуру (здесь), независимо от границы. Как можно это сделать?

Я провел некоторое тестирование, как показано ниже,

Pic1, заполненное ведро перед тем, как хорошо рисовать, так хорошо рисует над синим
Pic2, рисовал задолго до заливки заливки ведра, поэтому заполняет только одну часть

Мой код:

#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();
}

1 ответ

Решение

Используйте fillellipse() вместо ellipse().

Другие вопросы по тегам