Gérer un clic sur des Image avec en fond un PictureBox [Résolu]

Signaler
Messages postés
5
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
12 août 2009
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
[VS 2005 - C#]

Bonjour,
pour une interface graphique interactive, je veux afficher un fond de carte (un département), des icones sur ce fond de carte (villes) et lorsqu'on clique sur une ville, une fenetre s'ouvre avec le nom de la ville cliquée.

voici comment je place mes icones (villes) sur le fond de carte :

// chargement de l'image de fond dans le PictureBox
picFond.Image = Image.FromFile("carte.jpg");

// dans le dessin du PictureBox, affichage des icones
private void picFond_Paint(object sender, PaintEventArgs e)
{
            // charge l'image et la redimensionne
            Image ville;
           
ville
= Image.FromFile("ville.jpg");

            Size szIcone = new Size(30, 30);
            Bitmap b = new Bitmap(
ville
,szIcone);
           
ville
.Dispose();
           
ville
= b;

            Point ptHautGauche = new Point(100, 100);
            e.Graphics.DrawImage(
ville

, ptHautGauche);
}



Pour connaitre la ville cliquée, je récupère la position X et Y par les évenements de clic du
PictureBox
, mais comment relier cette position à la ville cliquée ?

Peux on gérer les évenements clic de souris sur une Image ?
Faut il comparer les
coordonnées du clic
à la position de chaque ville ? Et en cas de chevauchement des villes ?

Merci pour vos réponses sur le forum qui m'ont déjà aidé à en arriver là !

Nicolas

1 réponse

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
Salut, fait comme dans les jeux.. utilise une "Color Map", ç-à-d une 2ème image qui est une version noir et blanc de la première mais les points cliquables eux sont en couleur unie  ( pas de jpg  ), une couleur différente pour chaque villes.  La 2ème image n'est pas affichée par contre elle doit toujours avoir la même taille que celle affichée ce qui permet au moment ou l'utilisateur clique sur la première image de tester la couleur correspondante sur la 2ème avec GetPixel par exemple et donc de savoir sur quelle ville l'utilisateur a cliqué au pixel près.