Deplacement d'un rond sur un axe [Résolu]

Signaler
Messages postés
9
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
25 mai 2005
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
je voudrais faire se deplacer un rond sur un axe dont je connais les extremités

auriez vous une idée?

6 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
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
Messages postés
9
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
25 mai 2005
1
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
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
Messages postés
9
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
25 mai 2005
1
je te remercie

j'essaye ca demain matin et je te tiens o courant
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
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é !
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
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