Intégrer un repère à une image

atoguum4ever Messages postés 17 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 12 janvier 2005 - 19 janv. 2004 à 11:41
cs_guifr Messages postés 105 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 19 mai 2005 - 19 janv. 2004 à 15:03
Bonjour à tous
Débutant en VB, je me pose une question de dessin:
Comment à partir d'une image que je charge (qui représente un plan) définir les coordonnées de points sur cette image en cliquant à l'endroit du point sur la carte et comment afficher par la suite un symbole ( ex: point ou carré rouge ) à l'endroit où les points on été placés.
Merci d'avance

2 réponses

cs_guifr Messages postés 105 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 19 mai 2005
19 janv. 2004 à 14:54
Pour commencer, il faut que l'image soit chargée dans PictureBox, et non dans un objet "Image", sinon on ne pourra pas la modifier.
Le paramètre ScaleType du PictureBox doit être en mode point (le n°3, si mes souvenirs sont bons), c'est pas obligatoir, mais ça simplifira grandement nos calculs !
Ensuite il faut connaitre les coordonnées de l'origine, et cela dépend de ton image. En fait sur une PictureBox, le point (0,0) est en haut à gauche, et le point (Lmax, Hmax) est en bas à droite. Cela soulèvera par la suite un petit problème, plus tu va vers le haut sur l'axe des abscisses, plus ton nombre sera petit, alors qu'il devrait croître...
Pour le moment, on se content donc de définir deux valeurs, par exemple CentreX et CentreY, chacune contenant les coordonnées de l'originne de ton repère...
Ensuite, pour définir les valeurs d'un point sur lequel la souris pointe, à l'évènement MouseDown(), tu calcule les coordonnées qui sont pour x, X - CentreX, et pour y, c'est à peine plus délicat, il faut savoir à combien on est du "bas" du repère, pour ça il suffit de connaître le nombre de points que compte le repère (image.ScaleHeight où image est le nom de ta PictureBox), et tu en soustrais Y, à ce résultat du soustrais CentreY... CQFD si je me suis pas planté... :-p

La seconde partie de ta question, est un peu plus délicate, tout dépend de ce que tu veux faire afficher en ce point... imaginons que tu veuille y mettre un point rouge, pour le coups on utilisera les coordonnées de la PictureBox, et non celles que l'on a calculé (c'est logique d'ailleurs...);
image.pset (x, y), RGB(255, 0, 0)
où image est le contrôle PictureBox, x et y les coordonnées du point...

Tu l'auras sûrement remarqué j'utilise MouseDown() plutôt que Click(), la raison est simple, Click() n'apporte pas directement les arguments X et Y qui nous sont indispensables... En contrepartie, tu devras vérifier que c'est bien le bouton gauche qui est enfoncé si tu désires donner une autre fonction au bouton droit...
0
cs_guifr Messages postés 105 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 19 mai 2005
19 janv. 2004 à 15:03
aïe qu'est ce que je me suis compliqué la vie pour rien !!! l' habitude de travailler en min/max... bon c'est juste pour le calcul du y, il suffit de faire CentreY - Y...
Mea Culpa ! :big)
0
Rejoignez-nous