Проблема с Floodfill

  • Автор темы AntonKos
  • Дата начала
A

AntonKos

Гость
#1
Помогите плиз.Рисую 2 дуги.Ограничиваю их линями чтобы была ограниченная область,и далее floodfill.При любых значения. кроме 0 и getmaxcolor()
весь экран закрашивается БЕЛЫМ ЦВЕТОМ!!!
программа:
#include <math.h>
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int X,Y,i,j;
float x[4]={-5.08,5.08},y[4]={0.0,0.0};
float pi,phi,cos_phi,sin_phi,dx,dy,x0=319,y0=238,r=150;

double midX,midY;
int k;
float delta;
int massive_dannux[6]={4096,8192,10,2048,456,5881};
double X1,Y1;
float maxdlina,duga;
double alfa_rad,alfa_grad;
double cos_alfa_grad,sin_alfa_grad,cos_alfa_rad,sin_alfa_rad;
void main()
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;

/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}

directvideo = 1;
/*DRAW OMETKI*/
pi=4.0*atan(1.0);phi=-10*pi/180;
cos_phi=cos(phi);
sin_phi=sin(phi);
for (j=0;j<4;j++){x[j]+=x0+r;y[j]+=y0;}
for(i=-1;i<17;i++)
{
for (j=0;j<4;j++)
{
dx=x[j]-x0;
dy=y[j]-y0;
x[j]=x0+dx*cos_phi-dy*sin_phi;
y[j]=y0+dx*sin_phi+dy*cos_phi;
}
moveto(x[0],y[0]);
for(j=1;j<=3;j++)
lineto(x[j],y[j]);
lineto(x[1],y[1]);
}
/* draw a rectangle */
X=getmaxx();
Y=getmaxy();
rectangle(1,1,X,Y);
/*draw arc N1*/
midX=getmaxx() /2;
midY=getmaxy() /2;
arc(midX,midY,0,180,200);
printf("midY =%lf %lf",midX,midY);
setlinestyle(0,1,1);
moveto(519,239);
linerel(-20,0);
moveto(119,239);
linerel(20,0);
/*draw arc N2*/

arc(midX,midY,0,180,180);

/*Zakrashivanie dugi*/
setcolor(10);
setbkcolor(RED);
floodfill (120,237,getmaxcolor());

/*POLOZHENIE TO4KI*/

maxdlina=8192.0;
duga=180.0;
delta=maxdlina/duga;

for (k=0;k<=6;k++)
{
alfa_grad=massive_dannux[k]/delta;
alfa_rad=alfa_grad*pi/180;
cos_alfa_rad=cos(alfa_rad);
sin_alfa_rad=sin(alfa_rad);

X1=r*cos_alfa_rad+319;
Y1=r*sin_alfa_rad*(-1)+239;

moveto(x0,y0);
lineto(X1,Y1);

}

/* clean up */
getch();
closegraph();


}


ПОМОГИТЕ РАЗОБРАТЬСЯ!
 
A

AntonKos

Гость
#3
С ФЛУДФИЛОМ так проблема и осталась...помогите плиз.Перед ним ставил setfillstyle.Вроде все закрашивает.Но когда в окружности закрашеной надо ещё одну окружность нарисовать и закрасить другим цветом то снова все становится белым или под цвет последнего лавинного залива.