Associer des points d'une image plan ville à une liste de noms de stations

Signaler
Messages postés
5
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
16 février 2014
-
Messages postés
5
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
16 février 2014
-
Salut !

Je souhaite développer une appli en C# qui fait ceci pour un mini-projet :

Je dois partir d'une image (bmp ou jpg ou autre format) qui représente un plan d'une ville contenant 15 stations de métro. Je dipose donc d'une liste de noms de station (chaque nom = une station). Je dois créer et associer des points dans l'image (de la carte de la ville) à des noms de la liste de métro. Le but final est de faire clignoter (ou briller, ou autre) la partie ou le point de l'image où se trouve la station de métro désirée qu'un l'utilisateur sélectionnera à partir d'une liste (listebox) de noms de stations.

Pour résumer, je part d'une image d'un plan d'une ville, je dois pouvoir créer des points sur cette image, et associer chaque point à un nom (déjà, rien que ça, je ne sais pas comment faire ???).

Mes questions sont le suivantes (je suis novice en C# mais j'ai déjà programmé en C++ objet et un peu Java) :
1) comment insérer l'image dans un formulaire C# ?
2) comment y créer ou y sélectionner des points (avec la souris ou autre) ?
3) comment associer chaque point (obtenu à l'étape "2)") à un élément d'une liste de noms de station ?
4) comment faire briller ou clignoter le point de l'image concerné lorsqu'un utilisateur sélectionne un nom dans la liste (qui est le but final de l'appli) ?

Bref, si vous avez une appli similaire ou se rapprochant de mon mini-projet, je vous en serais plus reconnaissant !!!

Merci pour votre aide.

Johnattan.

3 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
Salut

1) Utilise le contrôle "PictureBox" et sa propriété "Image"
Image img = Image.FromFile("monfichier.jpg");
maPictureBox.Image = img;

2) Créer : utilise la classe Graphics
Soit : Graphics g = Graphics.FromImage(img);
Soit tu crées l'événement Paint sur ta picturebox, et l'argument de ta méthode appelée contiendra l'objet Graphics
maPictureBox.Paint += new PaintEventHandler(pictureBox1_Paint); // utilise "Tab" pour générer ta méthode automatiquement

Sélectionner : utilise les événements MouseQuelqueChose sur ta picturebox
maPictureBox.MouseDown +=  new MouseEventHandler(Form1_MouseDown); // utilise "Tab" pour générer ta méthode automatiquement
Ta méthode créée aura un MouseEventArgs qui te permettra notamment de connaître les coordonnées de ta souris

3) Via ses coordonnées (c'est encore ce qui me semble le plus simple)
=> tout est dans le point 2)

4) Clignoter, ça risque d'être dur (enfin tu peux toujours essayer avec un Timer)
Faire briller : il suffit de redessiner ton point comme dans le 2) mais avec une autre couleur.

Bonne chance

Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
44
Je viens de penser à une autre solution qui pourrait simplifier certaines choses : au lieu de dessiner les points sur la carte, tu peux utiliser plusieurs picturebox (1 par point) que tu placerais au dessus de ton image. Tu pourras alors utiliser l'événement Click ou MouseClick tout simplement. (et ce sera également plus facile de redessiner le point, voire de le faire clignoter)

Krimog : while (!(succeed = try())) ;
- Quand le règlement tu respecteras, ravis de te répondre on sera -
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
5
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
16 février 2014

Merci krimog d'avoir pris la peine de me répondre et de me proposer ta solution.
Je vais essayer ce que tu me proposes (même si je n'ai pas tout compris, car suis débutant en C#).

Johnattan.