2015-06-01 2 views
2

Я пытаюсь создать сетку прямоугольников, чтобы выглядеть как шахматная доска, и у меня есть проблемы с использованием графики BGI. Я получил свой код для создания серии прямоугольников, но каждый раз, когда я пытаюсь добавить цвет, весь дисплей становится белым. Вот мой текущий код:Заполнение прямоугольников с помощью floodfill C++

#include <iostream> 
#include <graphics.h> 

using namespace std; 


int main() 
{ 
    int e = 1; 
    int gd = DETECT, gm; 

    initgraph(&gd, &gm, "C:\\TC\\BGI"); 
    rectangle(0,0,160,160); 
    for(int a=0;a<=160;a+=20) { 
      for(int b=0;b<=160;b+=20) { 
      if (a == 0) { 
        rectangle(a*e,b*e,20*e,20*e); 
        getch(); 
        floodfill(a+1,b+1,RED); 
       } 
       else if ((160/a)%2 == 0) { 
        rectangle(a*e,b*e,20*e,20*e); 
        getch(); 
        floodfill(a,b,RED); 
       } 
       else { 
        rectangle(a*e,b*e,20*e,20*e); 
        getch(); 
        floodfill(100,100,BLACK); 
        } 
      } 
    } 

    while (!kbhit()) 
    { 
     delay(1000); 
    } 
    return 0; 
} 
+0

Почему бы не использовать ['bar()'] (http://www.cs.colorado.edu/~main/bgi/doc/bar.html)? Это, безусловно, будет быстрее, чем заливка потоком. –

ответ

0

Согласно this web page третьему параметру floodfill цвета использовать при поиске границы области для заполнения. Он использует текущий шаблон заполнения и заполняет цвет для рисования области.

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

Чтобы исправить это, вы можете либо

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

    или

  2. Более просто использовать функцию bar, как отметил капитан Obvlious.

Смежные вопросы