Ver Mensaje Individual
  #6  
Antiguo 13-02-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola JXJ.

Te había entendido mal, lo que hace el codigo anterior es generar las letras al azar y posicionarlas en ondas como en los captchas.

Para las lineas onduladas se me ocurrió este código pensando en las ondas senoidales:
Código Delphi [-]
...
procedure TForm1.DibujarOnda(PosY,LongitudOnda,Elongacion: Integer; AColor: TColor);
var
  P,C: TCoord;
  i: Integer;
begin
  C.X:= 0;
  C.Y:= 0;
  for i:= 0 to 360 do
  begin
    P.X := Round(i * LongitudOnda);
    P.Y := Round(Sin(i) * Elongacion);
    Image1.Canvas.Pen.Width:= 3;
    Image1.Canvas.Pen.Color:= AColor;
    Image1.Canvas.MoveTo(P.X, PosY+ P.Y);
    Image1.Canvas.LineTo(C.X, PosY+ C.Y);
    C:= P;
  end;
end;

procedure TForm1.DibujarFondo;
const
  Colores: array[1..16] of TColor =(clBlack,clBlue,clGray,clFuchsia,
           clGreen,clLime,clMaroon,clNavy,clOlive,clPurple,clRed,clSilver,
           clYellow,clTeal,clMaroon,clBlue);
var
  i, PosY: Integer;
begin
  Randomize;
  PosY:= 30;
  for i:= 1 to 4 do 
  begin
    DibujarOnda(PosY, Random(50)+20, 20+Random(10), Colores[Random(16)+1]);
    Inc(PosY, Random(20)+50);
  end;
end;
...
Llamada de ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('C:\TEMP\FONDO.BMP'); //(fondo blanco echo en Paint)
  DibujarFondo;
end;

Muestra:


Espero que te sirva o al menos te aporte alguna idea....

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 13-02-2011 a las 08:43:54.
Responder Con Cita