Faire Bouger Une Shape

Résolu
ff1061 Messages postés 13 Date d'inscription mercredi 16 septembre 2009 Statut Membre Dernière intervention 29 septembre 2009 - 25 sept. 2009 à 14:21
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 27 sept. 2009 à 01:09
Bonjour Tout Le Monde, voila , j'ai un cercle qui est positionné a un certain endroit et j'aimerais que lorsque l'on clique sur le bouton il se Déplace TRANQUILEMENT vers un certain point d'arrivé ( en utlilisant une boucle ou autre)....en ce moment je suis capable de le faire changer de position mais l'ordinateur est tellement rapide que on dirait tout simplement un redraw...j'aimerais que l'on puisse voir la trajectoire. Exemple le cercle commence a 50,50 et que while i < 50 do
Cercle.Left + 1;
Cercle.Top +1;
Inc(i);
mais comme dit plus haut...le changement est instantané.

Merci de votre aide

5 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 sept. 2009 à 00:50
while I < 50 do
 begin
  Cercle.SetBounds(Cercle.Left + 1, Cercle.Top + 1, Cercle.Width, Cercle.Height);
  sleep(1);
  Application.ProcessMessages;
 end;


L'utilisation de SetBounds est plus avantageuse que de changer Left et Top à la suite. Dans le premier cas, on ne redessine qu'une fois, et dans l'autre, on redessine le TShape 2 fois

Cordialement, Bacterius !
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 sept. 2009 à 01:09
Millisecondes.
1000 ms => 1 s

Cordialement, Bacterius !
3
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
25 sept. 2009 à 15:17
Salut,

tu peux utiliser un TTimer, mettre la fonction Sleep() ou utiliser GetTickCount avec application.ProcessMessages etc ...

A+
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
25 sept. 2009 à 15:51
test avec

while i < 50 do
Cercle.Left + 1;
Cercle.Top +1;
sleep(1);
Inc(i);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ff1061 Messages postés 13 Date d'inscription mercredi 16 septembre 2009 Statut Membre Dernière intervention 29 septembre 2009
26 sept. 2009 à 21:12
Juste Pour Savoir , est ce que le 1 est en seconde ou milieme de seconde ou je ne sais quoi :P et c'est vai quand j'y pense il le dessine deux fois...unhe fois pour le x et une autre pour le y
0
Rejoignez-nous