Ho utilizzato il seguente codice per creare una spirale:
dove: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;
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![]()

Rispondi quotando
