Detection du passage de la souris sur un gif sans prendre en compte la partie tr

Résolu
cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008 - 16 juil. 2008 à 12:10
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 ?

6 réponses

krishou Messages postés 60 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 21 août 2008 1
16 juil. 2008 à 17:00
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
3
TheMonz Messages postés 4 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 18 juillet 2008
18 juil. 2008 à 10:28
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
0
cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008
22 juil. 2008 à 11:24
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 !
0
cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008
28 juil. 2008 à 09:49
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
0

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

Posez votre question
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
27 nov. 2008 à 18:10
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 !!!
0
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
27 nov. 2008 à 18:12
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 !!!
0
Rejoignez-nous