Hola Khronos.
¿Te fijaste en
torry?
No se que tan elaborados quieres que sean esos efectos vivos que adornan al winamp y/o a otros reproductores....
Hace tiempo experimenté generar cosas como esas, pero como me pareció un poco complicado hallar ecuaciones que me generen esas formas opté por practicar cosas más sencillas. Por ejemplo:
Código Delphi
[-]
begin
Canvas.Pen.Color := RGB(Random(255),Random(255),Random(255));
Canvas.Pen.Width := Random(3);
for i:=1 to 100 do
begin
Canvas.LineTo(Pto.X,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
Canvas.Refresh;
end;
end;
begin
Canvas.Pen.Color := RGB(Random(255),Random(255),Random(255));
Canvas.Pen.Width := 3;
for i:=1 to ((Random(10)+1)*10) do
begin
Canvas.LineTo(Pto.X,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
Canvas.Refresh;
end;
form1.Refresh;
end;
begin
Pto.X := Random(form1.Width);
Pto.Y := Random(form1.Height);
Canvas.Pen.Color := RGB(Random(255),Random(255),Random(255));
Canvas.Pen.Width := 3;
for i:=1 to ((Random(10)+1)*10) do
begin
Canvas.LineTo(Pto.X,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
Canvas.Refresh;
end;
form1.Refresh;
end;
begin
Canvas.Pen.Color := RGB(Random(255),Random(255),Random(255));
Canvas.Pen.Width := 3;
for i:=1 to 100 do
begin
Canvas.LineTo(Pto.X,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
form1.Refresh;
end;
form1.Refresh;
end;
begin
Canvas.Pen.Color := RGB(Random(255),Random(255),Random(255));
Canvas.Pen.Width := Random(3);
for i:=1 to 50 do
begin
Canvas.LineTo(Pto.X div 2,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
Canvas.Refresh;
Canvas.LineTo(Pto.X div 2 + Pto.X ,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
Canvas.Refresh;
end;
end;
begin
Canvas.Pen.Color := RGB(Random(255),Random(255),Random(255));
Canvas.Pen.Width := 3;
for i:=1 to ((Random(10)+1)*10) do
begin
Canvas.LineTo(Pto.X div 2,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
Canvas.LineTo(Pto.X div 2 + Pto.X ,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
Canvas.Refresh;
end;
form1.Refresh;
end;
begin
for j:=1 to Random(2)+1 do
begin
Pto.X := Random(form1.Width);
Pto.Y := Random(form1.Height);
Canvas.Pen.Color := RGB(Random(255),Random(255),Random(255));
Canvas.Pen.Width := 3;
for i:=1 to ((Random(10)+1)*10) do
begin
Canvas.LineTo(Pto.X,Pto.Y);
x := Random(form1.Width);
y := Random(form1.Height);
Canvas.LineTo(x,y);
Canvas.Refresh;
end;
end;
form1.Refresh;
end;
Se que no es lo que buscas... yo te ofrezco esas alternativas sencillas.
No está demás que para ver dichos efectos debes emplear el evento OnTimer de un timer (o si quieres algo más "elaborado": Threads).
Saludos,
EDITO Y AGREGO:
Se me olvidó decir que Pto es un TPoint, y lo uso para guardar el punto central del form.