Tracer fichier coordonée de point

[Résolu]
Signaler
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009
-
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009
-
Bonjour à tous,

Apres de nombreuse recherche infructueuse, je demande de l aide :

Mon souci, j'ai un fichier txt de coordonée que charge dans une datagrid view resultat :

D         m     

x          -10,04

y          12

je veux tracer dans une picturebox pas de souci sauf que je ne voi pas comment afficher des coordoner negatif!!!! avec ellipse!
ni décimal il peut arriver d'avoir des position en 0,003

Alors si y a de l aide dans l air?

16 réponses

Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Ok je l ai envoyer en MP, voi ce que tu me dire de ce que j ai fait merci
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,

Comment ferais-tu avec une feuille de papier ?

Tu y dessinerais 2 axes (abscisses et ordonnées) dont l'intersection auraiet les coordonnées (0,0), n'est-ce pas ?
Et toutes les abscisses négatives seraient à gauche de ce point et la distance (à gauche) serait égale à la valeur de l'abscisse (puisque négative). Même raisonnement, n'est-ce pas, en ce qui concerne les ordonnées négatives (en remplaçant à gauche par en bas)...
Il en va exactement de même avec ton graphique dans la picturebox...
Définis tes axes (visibles ou non) et applique donc le même calcul arithmétique simple !
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Effectivement, mais alors comment faire pour les décimal, je voi ce que tu ma dit avant le but est de translater sont origine....
Ok j avais pas penser a cela
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Hé bien tu fais pareil pardi !
Imagine que tu n'aie qu'une règle en demi centimètres et que tu dois tracer avec une précision d'un dizième d'unité. Il te suffit alors d'appliquer une échelle 1 / 5 et tu as la bonne unité élémentaire !
Pareil avec tes pixels, tu as une précision d'un pixel, tu veux afficher un point à 0.003, sans qu'il se confonde avec un autre point en 0.002, tu as donc besoin d'une précision d'un millième, tu multiplie tes données par 1000, maintenant tu ne pourras sans doute pas afficher simultanément des points à 0.002 et 5.006 avec une précision d'un millième, mais à ce moment là, une telle "imprécision" est invisible à l'oeil nu et tu peux tout à fait te contenter d'une échelle 1/1 et assimiler ces nombres à 0 et 5...

<hr size="2" width="100%" />Julien.
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Ok, jvais tester mais comme j'ai des valeurs qui peuvent aller de 0,003 à 80 si je multiplie par mille :

j ai 3 et 8000 sa tiendra pas dans mon ecran en coordonner ou il faudrait que je redivise et la je retombe sur 0,00 quelque chose la merde quoi
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Mais c'est ce que je te dis plus haut, si tu as de tels points à afficher,  la différence à l'oeil nu sera invisible entre 0 et 0.003, quel est le problème à assimilier 0.003 à 0 si on ne voit pas la différence ?
Sinon une autre possibilité, si tu as besoin d'une grande précision au début, puis de moins en moins au fur et à mesure que les nombres augmentent, c'est d'utiliser une échelle logarithmique.

<hr width="100%" size="2" />Julien.
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Chui en cours d essaie je te tien au courant effectivement ça devrai passer 
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Bon la jbloc vraiment jme suis mal expliquer
       mesurer           nom          tmin       tmax
X   -22.0000   -22.0000     0.0040    -0.0040     0.0000               ±0.0    T_111
Y    11.1000    12.1000     0.0040    -0.0040     0.0000               ±0.0    T_112

Je trace le point mesurer de coordonée -22,11.1 pas de souci a ce niveau la grace a vous( rendons a cesar...)

ensuite il faut faut que je trace deux cercle de diametre 1 :  avec x et y nom : -22 et 12.1 et de diametre 2*tmin soit 0,008

pour pouvoir verifier que le point mesurer est bien compris dans la tolerance mais avec ce que l on a vu au dessu si je multiplie ma tol par 1000 je me retrouve avec un cercle trop grand et mes point ne peuve plus s afficher a l ecran

help....
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Mais tu n'es pas obligé que l'origine de tes axes apparaisse sur ton écran, translate ton écran pour qu'il soit centré sur (-22,11.1), et applique l'échelle de 1000 ne posera plus aucun problème...
En fait le plus simple à faire est de peu se soucier de ce que tu cadre et de laisser un controle à l'utilisateur. Par exemple il pourrait pouvoir déplacer le cadre de vue en déplacant la souris en maintenant le bouton gauche enfoncé et modifier le facteur d'échelle avec la roulette de la souris. Comme ca ca reste très maniable et intuitif pour l'utilisateur et toi tu n'as qu'à appliquer les formules de translation / échelle selon ses désirs...

<hr width="100%" size="2" />
Julien.
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

comment fait tu pour deplacer dans la pictureboxe, ou peutere garder tous en miniature ( facteur de 100) et faire un zoom, pour le zoom c etait prevu mais j ariive pas a rafraichir en gros vider ma picture box avant de relancer le tracer
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
En soit c'est pas très compliqué, tu as deux variables globales : un point pour la position de l'origine dans les coordonnées de base de la picturebox en pixel (OriginPos), et un single pour le facteur de zoom actuel (ZoomFactor).
Dans les évènements mouseMove, mouseButton etc... de ta picturebox, tu modifie ces variables comme demandé par l'utilisateur pour répondre à sa demande, et puis tu appelle PictureBox.Refresh()
En suite dans l'évènement Paint de ta picturebox, tu applique ces modifications puis tu dessine tes points :

e.Graphics.ResetTransform()
e.Graphics.TranslateTransform(OriginPos.x, OriginPos.y)
e.Graphics.ScaleTransform(ZoomFactor, ZoomFactor)
'Ici tu dessine tout tes objets sans modifier leurs coordonnées

Tu vois le principe ?

<hr width="100%" size="2" />Julien.
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

J integre ceci dans mon code ca vas me prendre un peu de temp
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

voila pour la transformation d origine je fai :

If
e.Button = Windows.Forms.MouseButtons.Right

Then

originpos = e.Location


End



If

je rafraichi
If

e.Button = Windows.Forms.MouseButtons.Right Then
PictureBox1.Refresh()

End
If

sa decale l origine ou je clique sur ma pictureboxe

comment accder au scrollin pour le zoom
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Pourquoi fais-tu deux blocs If distincts avec la même condition ? Regroupe les :
Ife.Button = Windows.Forms.MouseButtons.Right
Then
originpos = e.Location
PictureBox1.Refresh()

End
If

Pour la molette, regarde e.Delta, si mes souvenirs sont bons, il vaut 120 ou -120 selon le sens rotation.
<hr width="100%" size="2" />Julien.
Messages postés
34
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
23 février 2009

Franchement j per la tete jpeu t envyer ce que j ai fait que tu me dise ou je peche?
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Envois toujours, mais je pourrai pas passer bcp de temps dessus, je suis en bloque j'ai exam la semaine prochaine...

<hr width="100%" size="2" />Julien.