Deplacement d'un rond sur un axe

Résolu
cs_yannou2 Messages postés 9 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 25 mai 2005 - 25 mai 2005 à 14:55
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 25 mai 2005 à 21:08
je voudrais faire se deplacer un rond sur un axe dont je connais les extremités

auriez vous une idée?

6 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
25 mai 2005 à 15:15
Tu définis un Point pour les coordonées de ton rond

Tu dessines ton rond a l'aide d'un objet Graphics, et plus précisément de la méthode DrawEllipse (ou FillEllipse, au choix)

Tu t'inscris aux evenement MouseDown et MouseMove pour pouvoir détecter les mouvements de la souris quand tu as cliqué sur le rond

Tu met a jours les coordonées définies dans ton Point

Tu redessine le rond





En gros voila le principe.

Maintenant, sans plus d'infos, je peux rien te donner de plus précis.

Tu dessines sur une Form ? un Control perso ?

L'axe est droit ? de travers ?.

etc...

Mx
1
cs_yannou2 Messages postés 9 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 25 mai 2005 1
25 mai 2005 à 15:43
bon en fait c un axe droit

lorsque je lance l'animation, je ne touche plus a rien et le rond doit bouger le long de l'axe, pas forcément de facon réguliere, mais je n'ai pas envie de deoir dessiner le rond ici puis l'effacer le redessiner ailleurs.. donc j'aimerais assez que ca se fasse tout seul avec une application ou autre chose

le dessin se fait sur une Form
1
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
25 mai 2005 à 15:54
Ptit exemple vite fait.

A adapter selon tes besoins



<hr size="2" width="100%">

using System;

using System.Drawing;

using System.Windows.Forms;

using System.Threading;



namespace WindowsApplication

{

public class Form1 : System.Windows.Forms.Form

{

private Point p;

private Thread t;



public Form1()

{

p = new Point(10, 100);

t = new Thread(new ThreadStart(MoveEllipse));

t.IsBackground = true;

t.Priority = ThreadPriority.BelowNormal;

t.Start();

}



protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint (e);



Graphics g = e.Graphics;

g.DrawEllipse(new Pen(Color.Black, 0.5f), p.X, p.Y, 100, 100);

}



private void MoveEllipse()

{

while(true)

{

p.X += 1;

Thread.Sleep(50);

this.Invalidate();

}

}



[STAThread]

static void Main()

{

Application.Run(new Form1());

}

}

}

<hr size="2" width="100%">
Mx
1
cs_yannou2 Messages postés 9 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 25 mai 2005 1
25 mai 2005 à 16:00
je te remercie

j'essaye ca demain matin et je te tiens o courant
0

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

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
25 mai 2005 à 19:13
MorpionMx, Il est vraiment tres bien ecrit ton code mais le rond il part jusqu'a Vladivostok !? : )

Yannou, si tu veux vraiment rien programmer y'a une solution a 2? c'est de coller un gif animé !
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
25 mai 2005 à 21:08
Ouai, c'est vrai qu'il part loin, mais j'ai vraiment fait la base, a
adapter, apres il aura juste a definir les limites de l'axe et arreter
le deplacement du rond une fois la limite atteinte

Mx
0
Rejoignez-nous