Esto ya parece el "mas difícil todavía". Pero nada, si quieres un dibujar una espiral de colores, vamos a ver que se puede hacer.
Código Delphi
[-]
procedure Espiral(Canvas: TCanvas; X,Y,V,Ancho: Integer);
var
i,j,k: integer;
z: Real;
begin
Randomize;
Ancho:= Ancho * 16;
z:= (2*V*pi)/Ancho;
Canvas.MoveTo(x,y);
k:= 0;
for i:= 1 to V do
begin
Canvas.Pen.Color:= RGB(Random($FF),Random($FF),Random($FF));
for j:= 1 to Ancho div V do
begin
Canvas.LineTo(x + (Round(k*cos(z*k))) shr 4,y + (Round(k*sin(z*k)) shr 4));
inc(k);
end;
end;
end;
Un ejemplo de como usarla, fíjate que los parámetros son diferentes a las funciones anteriores:
Código Delphi
[-]
Espiral(Canvas,200,200,10,200);
Si quieres cambiar de color mas de una vez por vuelta entonces modificariamos un poco mas el codigo de la funcion:
Código Delphi
[-]
procedure Espiral(Canvas: TCanvas; X,Y,V,Ancho: Integer);
var
i,j,k: integer;
z: Real;
begin
Randomize;
Ancho:= Ancho * 16;
z:= (2*V*pi)/Ancho;
V:= V * 4;
Canvas.MoveTo(x,y);
k:= 0;
for i:= 1 to V do
begin
Canvas.Pen.Color:= RGB(Random($FF),Random($FF),Random($FF));
for j:= 1 to Ancho div V do
begin
Canvas.LineTo(x + (Round(k*cos(z*k))) shr 4,y + (Round(k*sin(z*k)) shr 4));
inc(k);
end;
end;
end;
¿que sera lo siguiente?