Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Delphi / Kylix / C++ Builder > Problema con un PaintBox
-Foros de debate

Delphi / Kylix / C++ Builder
Lista de foros | Lista de mensajes de este foro

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.

 
Re: Problema con un PaintBox
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

 
Re: Re: Problema con un PaintBox
Enviado por Miguel el día 15 de diciembre de 2008

Bueno es muy sencillo solo

unit Figuras;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ColorGrd, ExtCtrls,Math, ComCtrls;

type
ArregloR = array of real;

TfrmPrincipal = class(TForm)
Panel2D: TPanel;
Lienzo: TPanel;
PaintBox1: TPaintBox;
ColorGrid1: TColorGrid;
btnLimpiar: TButton;
MainMenu1: TMainMenu;
Graficos3d1: TMenuItem;
Fractales1: TMenuItem;
Graficos3d2: TMenuItem;
LaboratoriosVirtuales1: TMenuItem;
Fondo1: TMenuItem;
Salir1: TMenuItem;
gbxGraficosDinamicos: TGroupBox;
btnSegmentoDinam: TButton;
StatusBar1: TStatusBar;
btnCircunferenciaDinam: TButton;
btnRectanguloDinam: TButton;
cbxTipo: TComboBox;
btnCurva: TButton;
btnPoligono: TButton;
edtNumLados: TEdit;
btnCurvaAjuste: TButton;
btnCurvaBezier: TButton;
btnTapete: TButton;
cbxTipoTapete: TComboBox;
btnCurvaLagrange: TButton;
gbxBanderas: TGroupBox;
btnBandera: TButton;
btnBanderaDegradada: TButton;
btnSalir: TButton;
cbxTipoPaleta: TComboBox;
lblTipoPaleta: TLabel;
GrficosEstticos1: TMenuItem;
mnuVector: TMenuItem;
mnuSegmento: TMenuItem;
mnuCircunferencia: TMenuItem;
mnuRectangulo: TMenuItem;
mnuTriangulo: TMenuItem;
mnuArbol: TMenuItem;
mnuEstrella: TMenuItem;
clgColorFondo: TColorGrid;
gbxColorFondo: TGroupBox;
mnuCubo: TMenuItem;
mnuReloj: TMenuItem;
mnuElipse: TMenuItem;
btnElipseDin: TButton;
btnCurvaRelleno: TButton;
procedure Salir1Click(Sender: TObject);
procedure btnVectorClick(Sender: TObject);
procedure btnSegmentoClick(Sender: TObject);
procedure btnCircunferenciaClick(Sender: TObject);
procedure btnRectanguloClick(Sender: TObject);
procedure btnSegmentoDinamClick(Sender: TObject);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure btnCircunferenciaDinamClick(Sender: TObject);
procedure btnRectanguloDinamClick(Sender: TObject);
procedure btnCurvaClick(Sender: TObject);
procedure btnPoligonoClick(Sender: TObject);
procedure btnCurvaAjusteClick(Sender: TObject);
procedure btnLimpiarClick(Sender: TObject);
procedure marca(sx,sy:integer);
procedure btnCurvaBezierClick(Sender: TObject);
procedure btnTapeteClick(Sender: TObject);
procedure btnCurvaLagrangeClick(Sender: TObject);
procedure btnSalirClick(Sender: TObject);
procedure btnBanderaClick(Sender: TObject);
procedure btnBanderaDegradadaClick(Sender: TObject);
procedure PaintBox1Paint(Sender: TObject);
procedure btnPaletaClick(Sender: TObject);
procedure btnFractalClick(Sender: TObject);
procedure btnArbolClick(Sender: TObject);
procedure mnuVectorClick(Sender: TObject);
procedure mnuSegmentoClick(Sender: TObject);
procedure mnuCircunferenciaClick(Sender: TObject);
procedure mnuRectanguloClick(Sender: TObject);
procedure Arbol1Click(Sender: TObject);
procedure Estrella1Click(Sender: TObject);
procedure mnuTrianguloClick(Sender: TObject);
procedure mnuArbolClick(Sender: TObject);
procedure mnuEstrellaClick(Sender: TObject);
procedure ColorGrid1Click(Sender: TObject);
procedure Fondo1Click(Sender: TObject);
procedure mnuCuboClick(Sender: TObject);
procedure mnuRelojClick(Sender: TObject);
procedure btnElipseDinClick(Sender: TObject);
procedure mnuElipseClick(Sender: TObject);
procedure btnCurvaRellenoClick(Sender: TObject);
procedure btnSegmentoDegradadoClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

//clase libreria Gráfica

TLibreriaG = class
constructor create();
destructor destroy();
procedure pantalla(x,y:real;var Sx,Sy:integer);
procedure real1(Sx,Sy:integer;var x,y:real);
end;

//clase vector

TVector = class(TLibreriaG)
xo,yo:real;
color0:TColor;
constructor create(nxo,nyo:real;ncolor:TColor);
procedure encender();virtual;
procedure apagar();virtual;
end;

//clase Segmento

TSegmento = class(TVector)
xf,yf:real;
constructor create(nxo,nyo,nxf,nyf:real);
procedure encender();override;
end;

//clase circunferencia

TCircunferencia = class(TVector)
radio:real;
constructor create(nxo,nyo,nradio:real);
destructor destroy();
procedure encender();override;
end;

//clase Rectangulo

TRectangulo = class (TSegmento)
constructor create(nxo,nyo,nxf,nyf:real);
destructor destroy();
procedure encender();override;
end;

//clase Curva vectorial

TCurvaV = class(TCircunferencia)
private
tipo:word;
constructor create(nxo,nyo,nr:real);
destructor destroy();
procedure encender();override;
end;

//clase Poligono

TPoligono = class(TCircunferencia)
nlados:word;
constructor create(nxo,nyo,nradio:real;nl:word);
destructor destroy();
procedure encender();override;
end;

//clase Curva de ajuste

TCurvaA = class(TCurvaV)
NDatos:word;
Vx,Vy:ArregloR;
constructor create(nNDatos:word);
destructor destroy();
function lagrange(x:real):real;
procedure bezier(t:real;var Bx,By:real);
function spline(x:real):real;
procedure encender();override;
end;

//clase Tapete
TTapete = class(TCurvaV)
constructor create(ntipo:word);
destructor destroy();
procedure encender();override;
procedure encenderpaleta();
end;

//clase Figuras

TFiguras = class(TList)
constructor create();
destructor destroy();
procedure trazar();
end;

//clase fractal

TFractal = class(TSegmento)
Xm,Ym:real;
constructor create(nXo,nYo,nXf,nYf:real);
destructor destroy();
procedure sierpinsky();
end;

TFractal2= class(TCurvaV)
alfa,beta:real;
constructor create(nXo,nYo,nR:real);
destructor destroy;
procedure arbol;
procedure estrella;
end;

TElipse = class(TCircunferencia)
radio2:real;
constructor create(nxo,nyo,nradio,nradio2:real);
procedure encender;
destructor destroy;
end;

const

Sxmin=0; Sxmax=700;
Symin=0; Symax=360;
Xmin=-35; Xmax=35;
Ymin=-18; Ymax=18;
var
frmPrincipal: TfrmPrincipal;
bandera:word;
base:TLibreriaG;
Pxi,Pyi,Pxf,Pyf:real;
IndexA:word;
Ax,Ay:ArregloR;
Paleta0:array[0..9] of integer;
Paleta1:array[0..9] of integer;
LFiguras:TFiguras;

implementation

{$R *.dfm}

procedure TfrmPrincipal.Salir1Click(Sender: TObject);
begin
application.Terminate;
end;

{ TLibreriaG }

constructor TLibreriaG.create;
begin

end;

destructor TLibreriaG.destroy;
begin

end;

procedure TLibreriaG.pantalla(x, y: real; var Sx, Sy: integer);
begin
Sx:= Trunc((((Sxmin-Sxmax)/(Xmin-Xmax))*(X-Xmax)))+Sxmax;
Sy:= Trunc((((Symin-Symax)/(Ymax-Ymin))*(Y-Ymax)))+Symin;
end;

procedure TLibreriaG.real1(Sx, Sy: integer; var x, y: real);
begin
x:= ((((Sx-Sxmax)*(Xmin-Xmax))/(Sxmin-Sxmax)))+Xmax;
y:= ((((Sy-Symin)*(Ymax-Ymin))/(Symin-Symax)))+Ymax;
end;

{ TVector }

procedure TVector.apagar;
begin
color0:=frmPrincipal.Lienzo.Color;
encender();
end;

constructor TVector.create(nxo, nyo: real; ncolor: TColor);
begin
xo:=nxo;
yo:=nyo;
color0:=ncolor;
end;

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;

end;

{ TSegmento }

constructor TSegmento.create(nxo, nyo, nxf, nyf: real);
begin
xo:=nxo;
yo:=nyo;
xf:=nxf;
yf:=nyf;
end;

procedure TSegmento.encender;
var
v:TVector;
t,dt:real;
begin
v:=TVector.create(0,0,color0);
t:=0;
dt:=0.001;
repeat
v.xo:=xo*(1-t)+xf*(t);
v.yo:=yo*(1-t)+yf*(t);
//v.color0:=RGB(trunc(125*t),trunc(-125*(t-1)),0);
v.encender;
t:=t+dt;
until (t>=1);
v.destroy;
end;

procedure TfrmPrincipal.btnSegmentoClick(Sender: TObject);
var
s:TSegmento;
begin
s:=TSegmento.create(-30,15,20,-15);
s.color0:=ColorGrid1.ForegroundColor;
s.encender;
sleep(3000);
s.apagar;
end;

{ TCircunferencia }

constructor TCircunferencia.create(nxo, nyo, nradio: real);
begin
xo:=nxo;
yo:=nyo;
radio:=nradio;
end;

destructor TCircunferencia.destroy;
begin

end;

procedure TCircunferencia.encender;
var
v:TVector;
t,dt:real;
begin
v:=TVector.create(0,0,color0);
t:=-pi;
dt:=0.001;
repeat
v.xo:=xo+radio*cos(t);
v.yo:=yo+radio*sin(t);
v.encender;
t:=t+dt;
until (t >= pi);
v.destroy;
end;

procedure TfrmPrincipal.btnCircunferenciaClick(Sender: TObject);
var
c:TCircunferencia;
begin
c:=TCircunferencia.create(10,5,8.5);
c.color0:=ColorGrid1.ForegroundColor;
c.encender;
sleep(1000);
c.apagar;
end;

{ TRectangulo }

constructor TRectangulo.create(nxo, nyo, nxf, nyf: real);
begin
xo:=nxo;
yo:=nyo;
xf:=nxf;
yf:=nyf;
end;

destructor TRectangulo.destroy;
begin

end;

procedure TRectangulo.encender;
var
s:TSegmento;
begin
s:=TSegmento.create(0,0,0,0);
s.xo:=xo; s.xf:=xf;
s.yo:=yo; s.yf:=yo;
s.encender;

s.xo:=xf; s.xf:=xf;
s.yo:=yo; s.yf:=yf;
s.encender;

s.xo:=xf; s.xf:=xo;
s.yo:=yf; s.yf:=yf;
s.encender;

s.xo:=xo; s.xf:=xo;
s.yo:=yf; s.yf:=yo;
s.encender;

s.destroy;
end;

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.PaintBox1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
base.real1(X,Y,Pxi,Pyi);
inc(IndexA);
setLength(Ax,IndexA);
setLength(Ay,IndexA);
Ax[IndexA-1]:=Pxi;
Ay[IndexA-1]:=Pyi;
marca(X,Y);
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;

{ TPoligono }

constructor TPoligono.create(nxo, nyo, nradio: real; nl: word);
begin
xo:=nxo;
yo:=nyo;
radio:=nradio;
nlados:=nl;
end;

destructor TPoligono.destroy;
begin

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;

end;

procedure TfrmPrincipal.marca(sx, sy: integer);
begin
frmPrincipal.PaintBox1.Canvas.Pixels[sx,sy]:=clblue;
frmPrincipal.PaintBox1.Canvas.Pixels[sx+1,sy]:=clblue;
frmPrincipal.PaintBox1.Canvas.Pixels[sx-1,sy]:=clblue;
frmPrincipal.PaintBox1.Canvas.Pixels[sx,sy+1]:=clblue;
frmPrincipal.PaintBox1.Canvas.Pixels[sx,sy-1]:=clblue;
end;

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;

end;


{ TFractal }

constructor TFractal.create(nXo, nYo, nXf, nYf: real);
begin
Xo:=nXo;
Yo:=nYo;
Xf:=nXf;
Yf:=nYf;
end;

destructor TFractal.destroy;
begin

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

Tx:=(Xo+Xm)/2;
Ty:=(Yo+Ym)/2;
Mx:=(Xo+Xf)/2;
My:=(Yo+Yf)/2;
Rx:=(Xm+Xf)/2;
Ry:=(Ym+Yf)/2;

pTx:=Tx;
pTy:=Ty;
pMx:=Mx;
pMy:=My;
pRx:=Rx;
pRy:=Ry;
pXo:=Xo;
pYo:=Yo;
pXf:=Xf;
pYf:=Yf;
pXm:=Xm;
pYm:=Ym;

s.xo:=Tx;
s.yo:=Ty;
s.xf:=Mx;
s.yf:=My;
s.encender;
s.xo:=Rx;
s.yo:=Ry;
s.encender;
s.xf:=Tx;
s.yf:=Ty;
s.encender;
Xo:=pMx;
Yo:=pMy;
Xm:=Rx;
Ym:=Ry;
sierpinsky;
Xo:=pTx;
Yo:=pTy;
Xf:=pRx;
Yf:=pRy;
Xm:=pXm;
Ym:=pYm;
sierpinsky;

Xo:=pXo;
Yo:=pYo;
Xm:=pTx;
Ym:=pTy;
Xf:=pXm;
Yf:=pYm;
sierpinsky;

Xo:=pXo;
Yo:=pYo;
Xf:=pMx;
Yf:=pMy;
Xm:=pTx;
Ym:=pTy;
sierpinsky;


end;


end;

procedure TfrmPrincipal.btnFractalClick(Sender: TObject);
var
s:TSegmento;
sk:TFractal;
begin
s:=TSegmento.create(-15,-10,15,-10);
s.color0:=frmPrincipal.ColorGrid1.ForegroundColor;
s.encender;
s.xo:=0;
s.yo:=15;
s.encender;
s.xf:=-15;
s.yf:=-10;
s.encender;
sk:=TFractal.create(0,15,15,-10);
sk.Xm:=-15;
sk.Ym:=-10;
sk.sierpinsky;
s.destroy;
LFiguras.trazar;

end;

{ TFractal2 }

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;

fXf:=s.xf;
fYf:=s.yf;
Xo:=s.xf;
Yo:=s.yf;

alfa:=Falfa-beta;
radio:=Fradio*0.5;
arbol;
Xo:=s.xf;
Yo:=s.yf;
alfa:=Falfa;
radio:=Fradio*0.6;
arbol;
Xo:=fXf;
Yo:=fYf;
alfa:=Falfa+beta;
radio:=Fradio*0.5;
arbol;
end;
end;

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;

fract:=TFractal2.create(-22,-15,8);
fract.alfa:=pi/2;
fract.beta:=(5*pi)/10;
fract.arbol;
LFiguras.trazar;

fract:=TFractal2.create(-13,1.5,7);
fract.alfa:=2*pi/3;
fract.beta:=pi/4;
fract.arbol;
LFiguras.trazar;

fract:=TFractal2.create(10,-15,12);
fract.alfa:=pi/2;
fract.beta:=(5*pi)/4;
fract.arbol;
LFiguras.trazar;

fract:=TFractal2.create(25,-3,8);
fract.alfa:=pi/2;
fract.beta:=(7*pi)/5;
fract.arbol;

LFiguras.trazar;


end;

procedure TfrmPrincipal.Estrella1Click(Sender: TObject);
var
fr:TFractal2;
begin
fr:=TFRactal2.create(15,16,0.6);
fr.color0:=clLime;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(15,16,1);
fr.color0:=clLime;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(15,16,1.4);
fr.color0:=clLime;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);

fr:=TFRactal2.create(15,16,1.4);
fr.color0:=clblack;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr.destroy;

end;

procedure TfrmPrincipal.mnuTrianguloClick(Sender: TObject);
var
s:TSegmento;
sk:TFractal;
begin
s:=TSegmento.create(-15,-10,15,-10);
s.color0:=frmPrincipal.ColorGrid1.ForegroundColor;
s.encender;
s.xo:=0;
s.yo:=15;
s.encender;
s.xf:=-15;
s.yf:=-10;
s.encender;
sk:=TFractal.create(0,15,15,-10);
sk.Xm:=-15;
sk.Ym:=-10;
sk.sierpinsky;
s.destroy;
LFiguras.trazar;

end;

procedure TfrmPrincipal.mnuArbolClick(Sender: TObject);
var
fract:TFractal2;
begin
fract:=TFractal2.create(-3,-15,10);
fract.alfa:=pi/2;
fract.beta:=pi/8;
fract.arbol;
LFiguras.trazar;

fract:=TFractal2.create(-22,-15,8);
fract.alfa:=pi/2;
fract.beta:=(5*pi)/10;
fract.arbol;
LFiguras.trazar;

fract:=TFractal2.create(-13,1.5,7);
fract.alfa:=pi/2;
fract.beta:=pi/4;
fract.arbol;
LFiguras.trazar;

fract:=TFractal2.create(10,-15,12);
fract.alfa:=pi/2;
fract.beta:=(5*pi)/4;
fract.arbol;
LFiguras.trazar;

fract:=TFractal2.create(25,-3,8);
fract.alfa:=pi/2;
fract.beta:=(7*pi)/5;
fract.arbol;

LFiguras.trazar;

end;

procedure TfrmPrincipal.mnuEstrellaClick(Sender: TObject);
var
fr:TFractal2;
i:integer;
begin
i:=0;
while(i<5)do
begin
fr:=TFRactal2.create(15,16,0.6);
fr.color0:=clYellow;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(15,16,1);
fr.color0:=clYellow;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(15,16,1.4);
fr.color0:=clYellow;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);

fr:=TFRactal2.create(-26,5,0.6);
fr.color0:=clLime;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(-26,5,1);
fr.color0:=clLime;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(-26,5,1.4);
fr.color0:=clLime;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);


fr:=TFRactal2.create(10,16,0.6);
fr.color0:=clGreen;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(10,16,1);
fr.color0:=clGreen;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(10,16,1.4);
fr.color0:=clGreen;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);


fr:=TFRactal2.create(-10,7,0.6);
fr.color0:=clYellow;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(-10,7,1);
fr.color0:=clYellow;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(-10,7,1.4);
fr.color0:=clYellow;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);

fr:=TFRactal2.create(-25,16,0.6);
fr.color0:=clRed;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(-25,16,1);
fr.color0:=clRed;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(-25,16,1.4);
fr.color0:=clRed;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);


fr:=TFRactal2.create(28,16,0.6);
fr.color0:=clBlue;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(28,16,1);
fr.color0:=clBlue;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
fr:=TFRactal2.create(28,16,1.4);
fr.color0:=clBlue;;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);


//apagado

fr:=TFRactal2.create(15,16,1.4);
fr.color0:=frmPrincipal.Lienzo.Color;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;

fr:=TFRactal2.create(-26,5,1.4);
fr.color0:=frmPrincipal.Lienzo.Color;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);

fr:=TFRactal2.create(10,16,1.4);
fr.color0:=frmPrincipal.Lienzo.Color;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);

fr:=TFRactal2.create(-10,7,1.4);
fr.color0:=frmPrincipal.Lienzo.Color;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);

fr:=TFRactal2.create(-25,16,1.4);
fr.color0:=frmPrincipal.Lienzo.Color;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);

fr:=TFRactal2.create(28,16,1.4);
fr.color0:=frmPrincipal.Lienzo.Color;
fr.beta:=pi/8;
fr.alfa:=0;
fr.estrella;
sleep(1000);
i:=i+1;
end;
fr.destroy;
end;

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;

end;

procedure TfrmPrincipal.mnuRelojClick(Sender: TObject);
var
t,dt:real;
s:TSegmento;
c:TCircunferencia;
begin
t:=0;
dt:=0.1;
s:=TSegmento.create(0,0,1,1);
c:=TCircunferencia.create(0,0,1);
c.xo:=0;
c.yo:=0;
c.radio:=6;
c.color0:=clblue;
c.encender;
repeat
s.xo:=0;
s.yo:=0;
s.xf:=5*sin(t);
s.yf:=5*cos(t);
s.color0:=clred;
s.encender;
sleep(1000);
t:=t+dt;
s.apagar;
s.encender;
until t>2*pi;
s.destroy;
end;

{ TElipse }

constructor TElipse.create(nxo, nyo, nradio, nradio2: real);
begin
Xo:=nxo;
Yo:=nyo;
radio:=nradio;
radio2:=nradio2;
end;

destructor TElipse.destroy;
begin

end;

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


end;

end.

 



Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network