Créer une fenêtre WPF entièrement transparente pour capturer des événements de souris
Je suis en train de piéger les événements de la souris dans WPF à l'aide d'un niveau supérieur, transparent, non-fenêtre modale. Je trouve que cela fonctionne bien si l'opacité de la fenêtre est de 0,01 ou plus et il a une couleur d'arrière-plan, mais quand l'opacité est définie à 0, il ne reçoit plus les messages de souris. Est-il un moyen de faire de cette fenêtre look totalement transparent et toujours obtenir de l'entrée de la souris?
source d'informationauteur James Cadd
Vous devez vous connecter pour publier un commentaire.
Pour autant que je sache, non.
Lorsqu'un
Control
ouWindow
est entièrement transparent, il peut alors être cliqué. C'est le cas si vous définissez votreWindow.Background="Transparent"
ouOpacity="0"
. Pour autant que je sais, c'est par la conception en WPF.Lors de l'utilisation d'une opacité de 0,01, vous devriez voir à peine la fenêtre, si à tous. C'est probablement votre meilleur pari à la réalisation de la fonctionnalité.
Edit: une Autre solution, j'ai essayé et fait le travail, est de définir la couleur d'arrière-plan à une quasi-transparente de couleur. J'ai utilisé
Background="#01000000"
et donc de donner une valeur alpha de 1. Cela rend votre fenêtre arrière-plan transparent, mais permet de mettre en place des contrôles de la fenêtre à une opacité complète.Dans Visual Studio 2010:
Sélectionnez votre fenêtre de votre conception de la vue.
Définir les propriétés de votre fenêtre:
Juste choisir la couleur de Fond=Pinceaux.Transparent au lieu de Fond=null.
Vous n'avez pas besoin d'utiliser l'opacité à tous (c'est à dire. il suffit de laisser à 100% d'opacité).
Par exemple, je pense que votre nom de contrôle est
MyGrid
et que vous voulez êtreTransparent
et de toujours obtenirMouseOverEvent
.....Si (fenêtre
AllowsTransparency
estTrue
et la fenêtreBackground
estTransparent
) PuisD'autre
Réglage de l'opacité à 100% (ou toute valeur non nulle), et le fond en Transparent (au lieu de null), la plupart des contrôles hittable.
Assurez-vous de définir IsHitTestVisible de vrai. Pas tous les contrôles peuvent être frappés, même si l'opacité est de 100% et le fond est transparent.
Vous trouverez peut-être plus simple à utiliser
Mouse.Capture
.https://msdn.microsoft.com/en-us/library/ms771301.aspx