Tracer un point sur une image [Résolu]

cs_ChamY 74 Messages postés mercredi 5 janvier 2005Date d'inscription 22 mai 2009 Dernière intervention - 29 mars 2006 à 16:49 - Dernière réponse : bucherb 412 Messages postés lundi 26 mai 2003Date d'inscription 13 août 2007 Dernière intervention
- 30 mars 2006 à 10:28
Bonjour,
Mon application recoit en flux tendu des coordonnées (x,y).
J'aimerai representer sur un form ces coordonnées. Mon form dispose d'une image (un plan) et je voudrais dessiner dessus le point pour voir son evolution en fonction des coordonnnées.
Le "point" est representé par un petit cercle.

J'ai reussi a tracer une ligne, un cercle etc. Mais j ai un probleme.
Voila le code que j'utilise :

////
public void DrawCurvePointFSegmentTension(PaintEventArgs e)
{
// Create pens.
Pen redPen = new Pen(Color.Red, 3);

// Draw lines between original points to screen.
e.Graphics.DrawEllipse(redPen, 50.0F, 50.0F, 100, 100);//( (redPen, curvePoints);

}

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
DrawCurvePointFSegmentTension(e);
}

///////////////////////

J'aimerai que des que je recois une coordonnée, le point dessiné precedemment s'efface, et affiche le nouveau point.
Je ne peux pas utiliser la fonction OnPaint a chaque fois ...
Est ce que je peux instancier un PaintEventArgs ? pour pouvoir l'utiliser dans mes fonctions ? sans avoir a passer par le OntPaint

Bref comment faire :)

merci
ps: les coordonnées sont recu d'un GPS (je ferais les calculs pour convertir tout ca). J'arriverai comme ca a voir les deplacement d'une personne par ces coordonnées
Afficher la suite 

Votre réponse

6 réponses

sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 29 mars 2006 à 17:13
+3
Utile
il suffit de faire tonPictureBox.Invalidate();


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de sebmafate
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 29 mars 2006 à 16:59
0
Utile
quand tu reçois les informations du GPS... as-tu un évènement qui est déclenché ?

si oui, branche-toi dessus, dessine ton image avec toi, etc.

et dans le OnPaint, tu affiches cette image dans le context.


Sébastien FERRAND (
blog)
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate
cs_ChamY 74 Messages postés mercredi 5 janvier 2005Date d'inscription 22 mai 2009 Dernière intervention - 29 mars 2006 à 17:09
0
Utile
oui je sais quand je recois une info du GPS, j ai une fonction pour ca.
Mais j'ai fais un petit test. Mon form dispose d'une image (picturebox), quand je dessine par desssus, on ne voit rien, l'image n'a pas etait modifiée.

Et si par exemple j ai une fonction Dessine :
public void Dessine(int x, int y)
{
//comment faire appel a la fonction OnPaint ou DrawCurvePointFSegmentTension ?
// je n'arrive pas a lui passer PaintEventArgs e
// quand je veux en creer un, il me demande des graphic etc ... je suis un peu perdu la :)
}
Commenter la réponse de cs_ChamY
cs_ChamY 74 Messages postés mercredi 5 janvier 2005Date d'inscription 22 mai 2009 Dernière intervention - 29 mars 2006 à 17:47
0
Utile
merci bien,
il faut faire un refresh de la picturebox aussi :)
Commenter la réponse de cs_ChamY
cs_ChamY 74 Messages postés mercredi 5 janvier 2005Date d'inscription 22 mai 2009 Dernière intervention - 29 mars 2006 à 18:06
0
Utile
j arrive maintenant a tout faire a peu pret.
Il me manque plus qu'a effacer le point dessiné precedemment.
je recharge mon image d origine normalement, mais le point reste :)
comment tout effacer ?
Commenter la réponse de cs_ChamY
bucherb 412 Messages postés lundi 26 mai 2003Date d'inscription 13 août 2007 Dernière intervention - 30 mars 2006 à 10:28
0
Utile
En fait le code c'est

Invalidate();
Update();

Car sinon ton control n'est pas forcément rafraichit tout de suite... Donc si c'est pour redessiner tout un control t'as effectivement meilleur temps de faire un Refresh()

-------------------------
Trambert le vert
Commenter la réponse de bucherb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.