Tracer fichier coordonée de point

Résolu
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009 - 25 mai 2007 à 09:31
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009 - 25 mai 2007 à 14:39
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

zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 14:39
Ok je l ai envoyer en MP, voi ce que tu me dire de ce que j ai fait merci
3
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 mai 2007 à 09:40
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 !
0
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 09:53
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
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 mai 2007 à 10:43
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.
0

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

Posez votre question
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 10:50
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
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 mai 2007 à 10:55
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.
0
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 10:58
Chui en cours d essaie je te tien au courant effectivement ça devrai passer 
0
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 11:29
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....
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 mai 2007 à 11:43
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.
0
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 11:55
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
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 mai 2007 à 12:03
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.
0
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 12:45
J integre ceci dans mon code ca vas me prendre un peu de temp
0
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 13:04
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
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 mai 2007 à 13:18
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.
0
zairino Messages postés 34 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 23 février 2009
25 mai 2007 à 14:18
Franchement j per la tete jpeu t envyer ce que j ai fait que tu me dise ou je peche?
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 mai 2007 à 14:19
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.
0