Vous connaissez certainement le logiciel de retouche Paint.net
Les boîtes à outils sont translucides, et deviennent opaques lorsque la souris passe dessus.
J'ai voulu recréer cet effet pour mon programme de cinétique chimique.
On se dit que c'est évident : il suffit de modifier la propriété Opacity de la form.
C'est ce que fait la première partie de ma source : à l'événement MouseEnter, on rend le formulaire opaque, et on le rend translucide lorsque la souris le quitte (événement MouseLeave).
Problème : lorsque la souris passe sur un contrôle (un bouton par exemple), cela déclenche l'événement MouseLeave !
J'ai trouvé une solution sur un forum anglophone, je la partage avec cette source.
J'utilise un Timer qui teste toutes les 100ms si la souris est au dessus du formulaire.
On fait ce test comme ceci :
If Me.ClientRectangle.Contains(PointToClient(Control.MousePosition)) = True Then .....
Et ça fonctionne !
J'en ai profité pour faire un effet de fondu lorsque la souris quitte le formulaire (on décrémente progressivement l'opacité)
Dernière remarque : pour ne pas avoir d'effet de "clignottement" noir, il faut mettre la propriété TransparencyKey sur une autre couleur que Transparent. Prenez une couleur qui n'apparaît pas, par exemple Fushia...
Conclusion :
Cette source est rapide, c'est juste pour illustrer la méthode expliquée précédemment.
J'espère qu'elle pourra être utile à quelqu'un...
11 oct. 2011 à 21:31
25 avril 2009 à 23:51
Dans le cas de ma source, avec uniquement un bouton au milieu, ta méthode est meilleure.
Par contre, je ne vois pas d'utilisation particulière du CPU à cause du Timer. L'utilisation du processeur par le processus reste imperturbablement à 0%, même lorsque je bouge la souris par dessus la fenêtre...
J'ai utilisé un timer pour que ça fonctionne en toute circonstances.
Mais bon, libre à chacun d'adapter son code !
25 avril 2009 à 23:30
Ce sont surtout des habitudes de programmation, bien que l'on puisse malgré tout reprocher aux timers de bouffer pas mal de CPU ^^
25 avril 2009 à 23:02
Le Timer a l'avantage de fonctionner tout le temps.
C'est si grave d'avoir mis un Timer ?? ;-)
A te lire j'ai l'impression que tu veux absolument t'en débarasser...
25 avril 2009 à 22:21
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.