racimo1985
Messages postés13Date d'inscriptiondimanche 10 février 2008StatutMembreDernière intervention10 octobre 2008
-
28 sept. 2008 à 11:20
racimo1985
Messages postés13Date d'inscriptiondimanche 10 février 2008StatutMembreDernière intervention10 octobre 2008
-
30 sept. 2008 à 23:06
Bonjour tt le monde, j besoin d'un algorithme qui force une image ( deux rectangles en formant un L) à se redessiner lorsqu'on répète l'exécution de l'application , voici un petit programme qui dessine une image en utilisant l'objet " timer" :
unit Unit1;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i>97 then begin timer2.Enabled:=true; i:=0; timer1.Enabled:=false; end
else
begin
image1.Visible:=true;
image1.Canvas.Pen.Color:=clblue;
image1.Canvas.Pen.Width:=25 ;
image1.Canvas.Rectangle(0,0,20,i);
image1.Refresh;
i:=i+1;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if i>50 then begin timer3.Enabled:=true; i:=0; timer2.Enabled:=false; end
else
begin
image2.Visible:=true;
image2.Canvas.Pen.Color:=clblue;
image2.Canvas.Pen.Width:=100;
image2.Canvas.Rectangle(0,0,i,20);
image2.Refresh;
i:=i+1;
end;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
if i>500 then begin i:=0; timer3.Enabled:=false; end
else
begin
image1.Visible:=false;
image2.Visible:=false;
i:=i+1;
end;
end;
end.
losrqu'on clic une 2eme fois sur le button1 "L "se montre entiérement dessiné ! (pas comme on a voulu par notre programme!) .
cordialemment
Racimo1985.
racimo1985
Messages postés13Date d'inscriptiondimanche 10 février 2008StatutMembreDernière intervention10 octobre 2008 28 sept. 2008 à 19:04
Bonsoir[../auteur/CANTADOR/705439.aspx cantador]
Le but d' utiliser le timer c de permettre l'affichage séquentiel de deux segments (" I " (image1) suivi par" _ " (image2)), c que je veux c une solution du problm proposé :)
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 28 sept. 2008 à 22:27
Déjà une petite erreur de principe, on ferme un timer avant de l'ouvrir
et ta variable i n'était pas remise à zéro puisque le timer était déclenché.
Je n'ai pas vraiment compris ce que tu veux faire exactement mais regarde si
cela te convient.
Le programme est très lent..et n'est pas très convaincant...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i > 97 then
begin
i := 0;
timer2.Enabled := false;
timer2.Enabled := true;
timer1.Enabled := false;
end
else
begin
image1.Visible := true;
image1.Canvas.Pen.Color := clblue;
image1.Canvas.Pen.Width := 25;
image1.Canvas.Rectangle(0, 0, 20, i);
image1.Refresh;
i := i + 1;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if i > 50 then
begin
i := 0;
timer3.Enabled := false;
timer3.Enabled := true;
timer2.Enabled := false;
end
else
begin
image2.Visible := true;
image2.Canvas.Pen.Color := clblue;
image2.Canvas.Pen.Width := 100;
image2.Canvas.Rectangle(0, 0, i, 20);
image2.Refresh;
i := i + 1;
end;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
if i > 500 then
begin
i := 0;
timer3.Enabled := false;
end
else
begin
image1.Visible := false;
image2.Visible := false;
i := i + 1;
end;
end;
racimo1985
Messages postés13Date d'inscriptiondimanche 10 février 2008StatutMembreDernière intervention10 octobre 2008 30 sept. 2008 à 11:23
Bonjour, merci de m'avoir accordé ton temps pour essayer de trouver une solution pour ce problème .
Au début je devais t'informer que la propriété "enable" des timer est mise à "false" , et aussi que la valeur i est initialisée dans "procedure TForm1.FormCreate(Sender: TObject)" comme suivant :
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
end;
Ton programme est lent , donc tu dois modifier la propriété "interval" des timer comme suivant :
Timer1.interval:=10;
Timer2.interval:=10;
Timer3.interval:=2000;
En cliquant sur button1 tu aperçois que l'image 'L' se dessine en un mode de défilement (de haut vers le bas (image1 puis image2)), mais en cliquant une 2eme fois "L" s'affiche complètement dessinée (pas comme à la 1ere fois), c'est ça le problème à résoudre!
Racimo1985.
Vous n’avez pas trouvé la réponse que vous recherchez ?