Ho utilizzato il seguente codice per creare una spirale:
codice:
var a,x,y:integer; rad,r:real;
begin
r:=0; a:=0;
while(true) do
begin // a : 180 = rad : pi -> rad = a * pi / 180
rad := a * pi / 180;
x:=round(250+r*cos(rad));
y:=round(250+r*sin(rad));
I.Canvas.Pixels[x,y]:=ColorBox1.Selected;
r:=r+StrToFloat(edit1.Text);
a:=a+1;
if a>=360 then a:=a-360;
i.Refresh;
i.Repaint;
if ((x<0)or(x>500))and((y<0)or(y>500)) then exit;
end;
end;
dove:
r è il raggio che aumenta sempre di un delta che leggo da Edit1
a è l'angolo
I è il TImage
il disegno finisce quando esco dai margini del TImage (width:500,height:500)
Il problema è che inserendo delta piccoli (es 0,01) il disegno viene effettuato mooolto lentamente, ci mette più di 10 secodi x disegnarlo tutto. vorrei velocizzarlo (mantenendo ovviamente l'animazione, cioè il disegno visto punto x punto durante la creazione), come posso fare?
Grazie