Detection du passage de la souris sur un gif sans prendre en compte la partie tr [Résolu]

Messages postés
22
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
23 octobre 2008
- - Dernière réponse : ctx_man
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013
- 27 nov. 2008 à 18:12
Bonjour !

Je m'explique, je charge une image gif dans une pictureBox et je souhaite faire changer le contour de l'image quand la souris la survole.

Le probleme actuel : la partie transparente du gif declenche le survole :s

Quelqu'un à une solution ?
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
60
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
21 août 2008
3
Merci
A priori, pas moyen d'empêcher le déclenchement de l'évenement sur ta pictureBox uniquement sur la partie non transparente, l'évenement étant sur la pictureBox complète. Par contre tu peux essayer de prendre les coordonnées de ta souris au moment de l'event,puis de vérifier si la couleur correspond à la couleur de fond ( couleur du controle sur lequelle tu as posé ta pictureBox) et donc ne rien faire dans ce cas, ou effecture le traitement dans le cas contraire...

En espérant avoir pu te donner une piste pour résoudre ton problème.

BàT

Krish

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de krishou
Messages postés
4
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
18 juillet 2008
0
Merci
Salut

La solution la plus simple est la suivante :

Hérité de la picture Box pour avoir ta propre pictureBox....

Overrider le OnMouseMove...; et ne pas appelé le base.OnMouseMove() dans les cas ou tu ne veux pas lever l'evenement

Apres, pour la gestion de la transparence, il est conseillé de regarder par rapport aux coordonnées de la souris (fourni en paramêtre de l'event OnMouseMove), si le point de ton
image correspondant est transparent ou pas.. se baser sur la couleur se trouvant derrière, c'est une solution, mais je ne trouve pas cela très "propre"...

Voila, normalement avec ces infos, tu devrais pouvoir réaliser ce que tu veux en moins d'une heure !

The Monz, Toulouse
Commenter la réponse de TheMonz
Messages postés
22
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
23 octobre 2008
0
Merci
J'y ai pensé seulement il y a un .. hic.

Je souhaite m'en servir pour detecter sur quel region je suis sur une carte de france... resultat la partie transparente d'une region laisse apparaitre une autre region .. de la meme couleur ... :s

remarque > je peu faire une couleur par region ... mais ca deviens assez sale comme solution je trouve.

je suis pas specialement ferme sur l'utilisation de la picture box
Actuelement je cherche du coté des sprites .. il me semble qu'il y a des gestions assez poussé.
 
Merci pour les réponses en tous cas !
Commenter la réponse de cs_nonold
Messages postés
22
Date d'inscription
samedi 11 octobre 2003
Statut
Membre
Dernière intervention
23 octobre 2008
0
Merci
En fait la detection de couleur etant tres precise on peu jouer sur des valeurs qui se voient pas a l'oeil nue.
par exemple du 255 255 255 avec du 255 255 254 et ca suffit pour faire la difference ;)

Donc solution certe pas tres 'propre' mais fonctionnel :P
Commenter la réponse de cs_nonold
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013
0
Merci
Salut !

Tu veux dire que tu as 1 PictureBox par région de france et que ces PicturesBox se supperposent les uns aux autres pour afficher une carte complete de la france ?

Faut absolument pas faire comme ca, c'est trop la galère à gérer, ca te fait des objets lourds en mémoire pour pas grand chose, le gif c'est de mauvaise qualité (si c'est juste pour de la transparence, préfère le PNG 32Bit, windows gérant assez mal les autres PNG avec transparence dans certains cas).

Une seule picture box contenant la carte complète de france me semble beaucoup plus indiquée.

Tu créer un polygone pour chaque région de france (tableaux des points constituant le polygone).

Ensuite, sur le PictureBox contenant la carte complete, tu t'abonne à l'évènement MouseMove, ou tu dérives le PictureBox, comme tu veux.

Via une fonction mathématique pas très compliquée que tu trouvera facilement sur le net, tu détermine si ta souris est à l'interieur du polygone.
En stockant le dernier polygone sur lequel tu es, tu peux donc créer un nouvel évènement : OnPolygonEnter
Déclenché par le MouseMove, si tu détecte que tu n'est pas dans le même polygone qu'au passage précédent, c'est que tu viens d'entrer dans un nouveau polygone.
L'avantage de cette méthode, c'est qu'elle répond directement à ta problématique d'afficher le contour de la région, en effets, sur l'objet Graphics, utilisé pour faire des dessins, il y a une superbe méthode DrawPolygon() qui prend en paramètre un crayon et .... un polygone, pratique non ?

Le travail c'est la santé, ne rien faire c'est la préserver !!!
Commenter la réponse de ctx_man
Messages postés
285
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
20 janvier 2013
0
Merci
Hum, je viens seulement de voir que ce post date de juillet dernier, je suis pourtant pas remonté loin dans les messages du forum, ca signifie que ce forum n'est quasi plus visité ??

Le travail c'est la santé, ne rien faire c'est la préserver !!!
Commenter la réponse de ctx_man