使用floodfill c ++填充矩形

时间:2015-06-01 23:40:06

标签: c++ graphics draw bgi

我试图将矩形网格看作棋盘格,并且在使用BGI图形时遇到了一些麻烦。我已经得到了我的代码来生成一系列矩形,但每次我尝试添加颜色时,整个显示变为白色。这是我目前的代码:

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

2 个答案:

答案 0 :(得分:0)

根据this web pagefloodfill的第三个参数是查找要填充区域边框时使用的颜色。它使用当前填充图案和填充颜色来绘制区域。

在您的情况下,它永远不会找到黑色或红色边框,因此它会用白色填充整个页面。

要修复它,你可以

  1. 使矩形成为正确的边框颜色,并将填充颜色设置为红色或黑色,并修正填充位置的x,y位置。

  2. 更简单地使用bar函数作为Obvlious船长评论。

答案 1 :(得分:0)

在x和y坐标中的Floodfill函数中的

bro仅给出要填充的形状内任何点的坐标。确保不要在形状之外放置坐标,否则颜色将被填充到形状外部,或者它将被该颜色填充到屏幕上。