使用floodfill c++填充矩形

问题描述 投票:0回答:2

我正在尝试使矩形网格看起来像棋盘,但在使用 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;
}
c++ draw bgi
2个回答
0
投票

根据此网页

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

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

要修复它,您可以

  1. 将矩形设置为右边框颜色,并将填充颜色设置为红色或黑色,然后修复填充位置的 x,y 位置。

  2. 更简单地使用

    bar
    功能,正如 Captain Obvlious 评论的那样。


0
投票

在 x 和 y 坐标中的洪水填充函数中,只需给出要填充的形状内任何点的坐标。确保不要在形状外部提供坐标,否则颜色将填充形状外部,或者它将用该颜色填充屏幕。

© www.soinside.com 2019 - 2024. All rights reserved.