Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Problema con un PaintBox
Enviado por Radamanthys el día 28 de abril de 2005
Saludos:
Tengo un problema con un objeto de tipo PaintBox. Resulta que lo utilizo para pintar cosas sobre el, pero si abro por ejemplo otra ventana o incluso si minimizo y maximizo el programa, me desaparece lo que habia pintado. Se trata de alguna propiedad del objeto?
Gracias por las contestaciones.
Enviado por Albertinik el día 17 de diciembre de 2005
wenas, yo tenía el mismo problema y casi me vuelvo loco con el, la solución es muy sencilla, en lugar de utilizar el objeto PaintBox, utiliza el objeto TImage, funciona igual y no sucede el problema. Deeee nada
procedure TVector.encender;
var
sx,sy:integer;
begin
Pantalla(xo,yo,sx,sy);
frmPrincipal.PaintBox1.Canvas.Pixels[sx,sy]:=color0;
end;
procedure TfrmPrincipal.btnVectorClick(Sender: TObject);
var
p:TVector;
begin
p:=TVector.create(-17.5,9,20);
p.color0:=ColorGrid1.ForegroundColor;
p.encender;
procedure TfrmPrincipal.btnRectanguloClick(Sender: TObject);
var
r:TRectangulo;
begin
r:=TRectangulo.create(-30,15,20,-15);
r.color0:=ColorGrid1.ForegroundColor;
r.encender;
end;
procedure TfrmPrincipal.btnSegmentoDinamClick(Sender: TObject);
begin
bandera:=1;
StatusBar1.Panels[2].Text:='Segmentos';
end;
procedure TfrmPrincipal.PaintBox1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var rx,ry:real;
begin
base.real1(X,Y,rx,ry);
StatusBar1.Panels[0].Text:=FloatToStr(rx);
StatusBar1.Panels[1].Text:=FloatToStr(ry);
end;
procedure TfrmPrincipal.PaintBox1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
s:TSegmento;
c:TCircunferencia;
r:TRectangulo;
cv:TCurvaV;
p:TPoligono;
d,d2,i:real;
numlados:word;
e:TElipse;
begin
base.real1(X,Y,Pxf,Pyf);
d:=sqrt(sqr(Pxi-Pxf)+sqr(Pyi-Pyf));
d2:=(Pxi-PXf)+(Pyi-PYf);
case bandera of
1:
begin
s:=TSegmento.create(Pxi,Pyi,Pxf,Pyf);
s.color0:=ColorGrid1.ForegroundColor;
s.encender;
LFiguras.Add(s);
end;
2:
begin
c:=TCircunferencia.create(Pxi,Pyi,d);
c.color0:=ColorGrid1.ForegroundColor;
c.encender;
LFiguras.Add(c);
end;
3:
begin
r:=TRectangulo.create(Pxi,Pyi,Pxf,Pyf);
r.color0:=ColorGrid1.ForegroundColor;
r.encender;
LFiguras.Add(r);
end;
4:
begin
cv:=TCurvaV.create(Pxi,Pyi,d);
cv.tipo:=frmPrincipal.cbxTipo.ItemIndex;
cv.color0:=ColorGrid1.ForegroundColor;
cv.encender;
LFiguras.Add(cv);
end;
5:
begin
numlados:=StrToInt(frmPrincipal.edtNumLados.Text);
p:=TPoligono.create(Pxi,Pyi,d,numlados);
p.color0:=ColorGrid1.ForegroundColor;
p.encender;
LFiguras.Add(p);
end;
6:
begin
e:=TElipse.create(pxi,pyf,Abs(pxf-pxi),abs(pyi-pyf));
e.color0:=frmPrincipal.ColorGrid1.ForegroundColor;
e.encender;
e.destroy;
end;
7:
begin
cv:=TCurvaV.create(Pxi,Pyi,d);
cv.tipo:=2;
cv.color0:=ColorGrid1.ForegroundColor;
cv.encender;
LFiguras.Add(cv);
i:=0;
while i<d do
begin
cv:=TCurvaV.create(Pxi,Pyi,i);
cv.tipo:=2;
cv.color0:=ColorGrid1.ForegroundColor;
cv.encender;
i:=i+0.05;
end;
end;
end;
end;
procedure TfrmPrincipal.FormCreate(Sender: TObject);
var i:integer;
begin
IndexA:=0;
Paleta0[0]:=clBlack;
Paleta0[1]:=clBlue;
Paleta0[2]:=clRed;
Paleta0[3]:=clGreen;
Paleta0[4]:=clYellow;
Paleta0[5]:=clNavy;
Paleta0[6]:=clLime;
Paleta0[7]:=clMaroon;
Paleta0[8]:=clAqua;
Paleta0[9]:=clWhite;
Lfiguras:=TFiguras.create;
for i:=0 to 9 do
Paleta1[i]:=RGB(trunc((255*i)/9),trunc((255*i)/9),255);
end;
procedure TfrmPrincipal.btnCircunferenciaDinamClick(Sender: TObject);
begin
bandera:=2;
StatusBar1.Panels[2].Text:='Circunferencias';
end;
procedure TfrmPrincipal.btnRectanguloDinamClick(Sender: TObject);
begin
bandera:=3;
StatusBar1.Panels[2].Text:='Rectangulos';
end;
{ TCurvaV }
constructor TCurvaV.create(nxo, nyo, nr: real);
begin
xo:=nxo;
yo:=nyo;
radio:=nr;
end;
destructor TCurvaV.destroy;
begin
end;
procedure TCurvaV.encender;
var
v:TVector;
t,dt:real;
begin
v:=TVector.create(0,0,color0);
dt:=0.001;
case tipo of
0:
begin
t:=0;
repeat
v.xo:=xo+radio*(cos(3*t));
v.yo:=yo+radio*(sin(2*t));
v.encender;
t:=t+dt;
until t >= (2*pi);
v.destroy;
end;
1:
begin
t:=0;
repeat
v.xo:=xo+radio*(power(cos(t),3));
v.yo:=yo+radio*(power(sin(t),3));
v.encender;
t:=t+dt;
until t >= (2*pi);
end;
2:
begin
t:=0;
repeat
v.xo:=Xo+radio*(0.7*cos(4*t)*cos(t));
v.yo:=Yo+radio*(0.7*cos(4*t)*sin(t));
v.encender;
t:=t+dt;
until t >= (2*pi);
v.destroy;
end;
3:
begin
t:=0;
repeat
v.xo:=Xo+radio*((6*cos(t)-cos(6*t))/4);
v.yo:=Yo+radio*((6*sin(t)-sin(6*t))/4);
v.encender;
t:=t+dt;
until t > (2*pi);
v.destroy;
end;
end;
end;
procedure TfrmPrincipal.btnCurvaClick(Sender: TObject);
begin
if (cbxTipo.Text='Tipo Curva')then
Application.MessageBox('Seleccione el tipo de curva','Error',0)
else
StatusBar1.Panels[2].Text:='Curvas';
bandera:=4;
end;
procedure TPoligono.encender;
var
s:TSegmento;
alfa,beta:real;
begin
s:=TSegmento.create(0,0,0,0);
alfa:=2*pi/nlados;
beta:=pi/2;
repeat
s.xo:=xo+radio*cos(beta);
s.yo:=yo+radio*sin(beta);
s.xf:=xo+radio*cos(beta+alfa);
s.yf:=yo+radio*sin(beta+alfa);
// s.color0:=frmPrincipal.ColorGrid1.ForegroundColor;
s.encender;
beta:=beta+alfa;
until beta >= ((5*pi)/2);
s.destroy;
end;
procedure TfrmPrincipal.btnPoligonoClick(Sender: TObject);
begin
if( edtNumLados.Text = '') then
Application.MessageBox('Ingrese el numero de lados','Error',0)
else
StatusBar1.Panels[2].Text:='Poligonos';
bandera:=5;
end;
{ TCurvaA }
procedure TCurvaA.bezier(t: real; var Bx, By: real);
var
Sx,Sy:real;
i:integer;
function fact(n:integer):longint;
begin
if ((n=0)or(n=1))then
fact:=1
else
fact:=fact(n-1)*n;
end;
begin
Sx:=0;Sy:=0;
for i:=0 to NDatos do
begin
Sx:=Sx+(Vx[i]*(fact(NDatos)/(fact(i)*fact(NDatos-i)))*Power(t,i)*Power(1-t,NDatos-i));
Sy:=Sy+(Vy[i]*(fact(NDatos)/(fact(i)*fact(NDatos-i)))*Power(t,i)*Power(1-t,NDatos-i));
end;
Bx:=Sx;
By:=Sy;
end;
constructor TCurvaA.create(nNDatos: word);
begin
NDatos:=nNDatos;
end;
destructor TCurvaA.destroy;
begin
end;
procedure TCurvaA.encender;
var
v:TVector;
s:TSegmento;
t,dt,wx,wy:real;
begin
v:=TVector.create(0,0,color0);
case tipo of
0:
begin
s:=TSegmento.create(0,0,0,0);
end;
1: //lagrange
begin
t:=Vx[0];
dt:=0.001;
repeat
v.xo:=t;
v.yo:=lagrange(t);
v.encender;
t:=t+dt;
until t >= Vx[NDatos];
v.destroy;
end;
2:
begin
t:=0;
dt:=0.001;
repeat
bezier(t,wx,wy);
v.xo:=wx;
v.yo:=wy;
v.encender;
t:=t+dt;
until t>=1;
v.destroy;
end;
end;
end;
function TCurvaA.lagrange(x: real): real;
var
s,p:real;
i,j:word;
begin
s:=0;
for i:=0 to NDatos do
begin
p:=1;
for j:=0 to NDatos do
begin
if (Vx[i]<>Vx[j]) then
p:=p*((x-Vx[j])/(Vx[i]-Vx[j]));
end;
s:=s+Vy[i]*p;
end;
lagrange:=s;
end;
function TCurvaA.spline(x: real): real;
begin
end;
procedure TfrmPrincipal.btnCurvaAjusteClick(Sender: TObject);
var
s:TSegmento;
i:word;
begin
s:=TSegmento.create(Pxi,Pyi,Pxf,Pyf);
for i:=0 to IndexA-2 do
begin
s.xo:=Ax[i];
s.yo:=Ay[i];
s.xf:=Ax[i+1];
s.yf:=Ay[i+1];
s.color0:=ColorGrid1.ForegroundColor;
s.encender;
LFiguras.Add(s);
end;
end;
procedure TfrmPrincipal.btnLimpiarClick(Sender: TObject);
begin
LFiguras.Clear;
PaintBox1.Repaint;
IndexA:=0;
procedure TfrmPrincipal.btnCurvaBezierClick(Sender: TObject);
var
cb:TCurvaA;
begin
cb:=TCurvaA.create(IndexA-1);
cb.Vx:=Ax;
cb.Vy:=Ay;
cb.tipo:=2;
cb.color0:=ColorGrid1.ForegroundColor;
cb.encender;
LFiguras.Add(cb);
end;
{ TTapete }
constructor TTapete.create(ntipo: word);
begin
tipo:=ntipo;
end;
destructor TTapete.destroy;
begin
end;
procedure TTapete.encender;
var
i,j:integer;
aux:real;
begin
begin
case tipo of
0:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=((i*i)*(j*j)) mod 9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
1:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=(sin(i))*9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
2:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=((i*i*i)*(j*j*j)) mod 9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
3:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=(cos(i)+cos(j)) ;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
4:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=(tan(i)+tan(j));
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
5:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=(sin(i)*sin(j))*9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
6:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc(PI*i*sqrt(j))mod 9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
7:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc((i*25)* tan (j*PI*PI))mod 30;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
8:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc(sqrt((378*i)/9))mod 30 + (sqrt((7580*j)/30)+trunc(pi*i*sqrt(j))mod 30);
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
9:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc((i*25)*tan(j*pi*pi))mod 30;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
10:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc((i+j)/10)mod 9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta0[trunc(aux)];
end;
end;
end;
end;
end;
procedure TTapete.encenderpaleta;
var
i,j:integer;
aux:real;
begin
begin
case tipo of
0:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=((i*i)*(j*j)) mod 9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
1:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=(sin(i))*9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
2:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=((i*i*i)*(j*j*j)) mod 9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
3:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=(cos(i)+cos(j)) ;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
4:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=(tan(i)+tan(j));
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
5:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=(sin(i)*sin(j))*9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
6:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc(PI*i*sqrt(j))mod 9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
7:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc((i*25)* tan (j*PI*PI))mod 30;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
8:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc(sqrt((378*i)/9))mod 30 + (sqrt((7580*j)/30)+trunc(pi*i*sqrt(j))mod 30);
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
9:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc((i*25)*tan(j*pi*pi))mod 30;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
10:
begin
for i:=1 to 700 do
for j:=2 to 360 do
begin
aux:=trunc((i+j)/10)mod 9;
frmPrincipal.PaintBox1.Canvas.Pixels[i,j]:=Paleta1[trunc(aux)];
end;
end;
end;
end;
end;
procedure TfrmPrincipal.btnTapeteClick(Sender: TObject);
var
t,tp:TTapete;
tipo:word;
begin
if(cbxTipoPaleta.Text = 'Tipo Paleta')and (cbxTipoTapete.Text='Tipo Tapete')then
Application.MessageBox('Seleccione el tipo de paleta','Error',0)
else
begin
if (cbxTipoPaleta.Text='Paleta 0')then
if (cbxTipoTapete.Text <> 'Tipo Tapete') then
begin
tipo:=cbxTipoTapete.ItemIndex;
t:=TTapete.create(tipo);
t.encender;
LFiguras.Add(t);
end
else
Application.MessageBox('Seleccione el tipo de tapete','Error',0)
else
if(cbxTipoPaleta.Text='Paleta 1')then
if (cbxTipoTapete.Text <> 'Tipo Tapete') then
begin
tipo:=cbxTipoTapete.ItemIndex;
tp:=TTapete.create(tipo);
tp.encenderPaleta;
LFiguras.Add(tp);
end
else
Application.MessageBox('Seleccione el tipo de tapete','Error',0)
end;
end;
procedure TfrmPrincipal.btnCurvaLagrangeClick(Sender: TObject);
var
cl:TCurvaA;
begin
cl:=TCurvaA.create(IndexA-1);
cl.Vx:=Ax;
cl.Vy:=Ay;
cl.tipo:=1;
cl.color0:=ColorGrid1.ForegroundColor;
cl.encender;
LFiguras.Add(cl);
end;
procedure TfrmPrincipal.btnSalirClick(Sender: TObject);
begin
application.Terminate;
end;
procedure TfrmPrincipal.btnBanderaClick(Sender: TObject);
var
i,j:integer;
begin
for i:=0 to 700 do
begin
for j:=0 to 120 do
PaintBox1.Canvas.Pixels[i,j] :=RGB(0,125,0) ;
for j:=120 to 240 do
PaintBox1.Canvas.Pixels[i,j] := RGB(255,255,255);
for j:=240 to 360 do
PaintBox1.Canvas.Pixels[i,j] := RGB(62,124,230);
end;
end;
procedure TfrmPrincipal.btnBanderaDegradadaClick(Sender: TObject);
var
i,j:integer;
begin
for i:=0 to 700 do
begin
for j:=0 to 180 do
begin
PaintBox1.Canvas.Pixels[i,j] := RGB(Trunc(1.417*(j)), trunc(-0.69*(j-180)+1.417*(j)), Trunc(1.417*(j) ));
end;
for j:=180 to 360 do
begin
PaintBox1.Canvas.Pixels[i,j] := RGB(Trunc(-1.417*(j-360)+0.344*(j-180)),trunc(-1.417*(j-360)+0.68*(j-180)), Trunc(-1.417*(j-360)+1.27*(j-180)) );
end;
end;
end;
{ TFiguras }
constructor TFiguras.create;
begin
end;
destructor TFiguras.destroy;
begin
end;
procedure TFiguras.trazar;
var
i:integer;
begin
for i:=0 to Count-1 do //count es atributo de la clase TList
TVector(Items[i]).encender;
end;
//evento q se ejecuta automaticamente cuando el paintbox aparece
procedure TfrmPrincipal.PaintBox1Paint(Sender: TObject);
begin
LFiguras.trazar();
end;
procedure TfrmPrincipal.btnPaletaClick(Sender: TObject);
var
tp:TTapete;
tipo:word;
begin
if (cbxTipoPaleta.Text='Tipo Paleta')then
Application.MessageBox('Seleccione un tipo de Tapete','Error',0)
else
begin
bandera:=8;
tipo:=cbxTipoPaleta.ItemIndex;
tp:=TTapete.create(tipo);
tp.encenderpaleta;
LFiguras.Add(tp);
end;
procedure TFractal.sierpinsky;
var
s:TSegmento;
Tx,Ty,Mx,My,Rx,Ry,aux,pTx,pTy,pMx,pMy,pRx,pRy,pXo,pYo,pXf,pYf,PXm,PYm:real;
begin
s:=TSegmento.create(0,0,0,0);
aux:=abs(Xo-Xf)+abs(Yo-Yf);
if ( aux > 1.5 ) then
begin
procedure TFractal2.arbol;
var
s:TSegmento;
Fradio,Falfa:real;fXf,fYf:real;
begin
s:=TSegmento.create(Xo,Yo,1,1);
Falfa:=alfa;
Fradio:=radio;
if (radio > 0.1 ) then
begin
s.color0:=RGB(trunc(-32.27*(radio-8)),255,trunc(-32.27*(radio-8)));
s.xf:=Xo+radio*cos(alfa);
s.yf:=Yo+radio*sin(alfa);
s.encender;
procedure TFractal2.estrella;
var
s:TSegmento;
begin
s:=TSegmento.create(Xo,Yo,1,1);
s.color0:=color0;
if ( alfa <= 2*pi ) then
begin
s.xf:=Xo+radio*cos(alfa);
s.yf:=Yo+radio*sin(alfa);
s.encender;
alfa:=alfa+beta;
estrella;
end;
end;
constructor TFractal2.create(nXo, nYo, nR: real);
begin
Xo:=nXo;
Yo:=nYo;
radio:=nR;
end;
destructor TFractal2.destroy;
begin
end;
procedure TfrmPrincipal.btnArbolClick(Sender: TObject);
var
fract:TFractal2;
begin
fract:=TFractal2.create(-10,-15,8);
fract.alfa:=pi/2;
fract.beta:=pi/8;
fract.arbol;
LFiguras.trazar;
end;
procedure TfrmPrincipal.mnuVectorClick(Sender: TObject);
var
p:TVector;
begin
p:=TVector.create(-17.5,9,20);
p.color0:=ColorGrid1.ForegroundColor;
p.encender;
end;
procedure TfrmPrincipal.mnuSegmentoClick(Sender: TObject);
var
s:TSegmento;
begin
s:=TSegmento.create(-30,15,20,-15);
s.color0:=ColorGrid1.ForegroundColor;
s.encender;
sleep(3000);
s.apagar;
end;
procedure TfrmPrincipal.mnuCircunferenciaClick(Sender: TObject);
var
c:TCircunferencia;
begin
c:=TCircunferencia.create(10,5,8.5);
c.color0:=ColorGrid1.ForegroundColor;
c.encender;
sleep(1000);
c.apagar;
end;
procedure TfrmPrincipal.mnuRectanguloClick(Sender: TObject);
var
r:TRectangulo;
begin
r:=TRectangulo.create(-30,15,20,-15);
r.color0:=ColorGrid1.ForegroundColor;
r.encender;
end;
procedure TfrmPrincipal.Arbol1Click(Sender: TObject);
var
fract:TFractal2;
begin
fract:=TFractal2.create(-3,-15,10);
fract.alfa:=pi/2;
fract.beta:=pi/8;
fract.arbol;
LFiguras.trazar;
procedure TfrmPrincipal.ColorGrid1Click(Sender: TObject);
begin
frmPrincipal.Lienzo.Color:=frmPrincipal.clgColorFondo.ForegroundColor;
GbxColorFondo.Visible:=false;
clgColorFondo.Visible:=False;
end;
procedure TfrmPrincipal.Fondo1Click(Sender: TObject);
begin
frmPrincipal.clgColorFondo.Visible:=true;
frmPrincipal.gbxColorFondo.Visible:=true;
end;
procedure TfrmPrincipal.mnuCuboClick(Sender: TObject);
var t:TSegmento;
i:integer;
Px,Py:real;
begin
t:=TSegmento.create(0,0,0,0);
t.color0:=frmPrincipal.ColorGrid1.ForegroundColor;
if (IndexA=4) then
begin
Px:=Ax[0];
Py:=Ay[0];
for i:=1 to 3 do
begin
t.xo:=Pxi;
t.yo:=Pyi;
t.xf:=Ax[i];
t.yf:=Ay[i];
t.encender;
Px:=Ax[i];
Py:=Ay[i];
end;
t.xo:=Ax[0];
t.yo:=Ay[0];
t.xf:=Ax[3];
t.yf:=Ay[3];
IndexA:=0;
t.encender;
end;
t.destroy;
procedure TElipse.encender;
var
v:TVector;
t,dt:real;
begin
v:=TVector.create(0,0,1);
t:=0;
dt:=0.001;
repeat
v.xo:=Xo+radio*cos(t);
v.yo:=Yo+radio2*sin(t);
v.encender;
t:=t+dt;
until t >= 2*pi;
v.destroy;
end;
procedure TfrmPrincipal.btnElipseDinClick(Sender: TObject);
begin
bandera:=6;
StatusBar1.Panels[2].Text:='Elipse';
end;
procedure TfrmPrincipal.mnuElipseClick(Sender: TObject);
var
e:TElipse;
begin
e:=TElipse.create(10,5,8,5);
e.color0:=frmPrincipal.ColorGrid1.ForegroundColor;
e.encender;
e.destroy;
end;
procedure TfrmPrincipal.btnCurvaRellenoClick(Sender: TObject);
begin
bandera:=7;
end;
procedure TfrmPrincipal.btnSegmentoDegradadoClick(Sender: TObject);
var
s:TSegmento;
begin