Modifier l'opacité d'un formulaire au passage de la souris

Description

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...

Codes Sources

A voir également

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.