我正在尝试使矩形网格看起来像棋盘,但在使用 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;
}
根据此网页,
floodfill
的第三个参数是查找要填充的区域的边框时使用的颜色。它使用当前的填充图案和填充颜色来绘制该区域。
在您的情况下,它永远找不到黑色或红色边框,因此它用白色填充整个页面。
要修复它,您可以
将矩形设置为右边框颜色,并将填充颜色设置为红色或黑色,然后修复填充位置的 x,y 位置。
或
更简单地使用
bar
功能,正如 Captain Obvlious 评论的那样。
在 x 和 y 坐标中的洪水填充函数中,只需给出要填充的形状内任何点的坐标。确保不要在形状外部提供坐标,否则颜色将填充形状外部,或者它将用该颜色填充屏幕。