C图形中的洪水填充困难
Flood fill difficulty in C graphics
(注意:我的大学让我用古老的 Turbo C 学习图形)
无论如何,我正在使用内置的填充算法来给水井和水桶上色。
我面临的问题是编译器将区域填充到边界颜色。但是,我想填写一个基本图形(此处为 elipse),而不管边界如何。
如何做到这一点?
我做了一些测试,如下所示,
图1,画好之前先把水桶装满,画得好就画过了蓝色
图2,洪水灌桶前画好,所以只灌了一部分
我的代码:
#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();
}
使用 fillellipse() 而不是 ellipse()。
(注意:我的大学让我用古老的 Turbo C 学习图形)
无论如何,我正在使用内置的填充算法来给水井和水桶上色。
我面临的问题是编译器将区域填充到边界颜色。但是,我想填写一个基本图形(此处为 elipse),而不管边界如何。 如何做到这一点?
我做了一些测试,如下所示,
图1,画好之前先把水桶装满,画得好就画过了蓝色
图2,洪水灌桶前画好,所以只灌了一部分
我的代码:
#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();
}
使用 fillellipse() 而不是 ellipse()。