2015-05-13 9 views
0

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

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

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

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

enter image description here

Pic1, Заполненного ведра перед нанесением хорошо, так хорошо рисует над синим
pic2, Drew задолго до заливки ведра , Таким образом, заполняется только одна часть

Мой код:

#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') в том же положении и с одинаковым размером? Нужно ли действительно содержать алгоритм заполнения заполнителя? – Malina

+1

Попробуйте использовать «fillellipse» вместо «ellipse» – Buddy

+1

Turbo C, BGI, о, мой! – isanae

ответ