Estoy tratando de atrapar eventos del mouse en WPF utilizando una ventana no modal superior y transparente. Me parece que esto funciona bien si la opacidad de la ventana es 0.01 o mayor y tiene un color de fondo, pero cuando la opacidad se establece en 0, ya no recibe mensajes del mouse. ¿Hay alguna manera de hacer que esta ventana se vea completamente transparente y aún así obtener la entrada del mouse?Crear una ventana WPF completamente transparente para capturar eventos del mouse
Respuesta
Por lo que sé, no.
Cuando un Control
o Window
es completamente transparente, se puede hacer clic a través de él. Este es el caso si configura su Window.Background="Transparent"
o Opacity="0"
. Hasta donde yo sé, esto es por diseño en WPF.
Al usar una opacidad de 0.01, apenas debería ver la ventana, si es que lo hace. Esta es probablemente su mejor apuesta para lograr la funcionalidad.
Editar: Otra solución, que probé y funciona, es establecer el color de fondo a un color casi transparente. Usé Background="#01000000"
, dando así un valor alfa de 1. Esto hace que el fondo de la ventana tenga un aspecto transparente, pero le permite colocar controles con la ventana a plena opacidad.
Sí, tampoco pude encontrar una solución alternativa. Que tiene sentido. –
Ver mi edición para una solución diferente. Puede cambiar el fondo a un color casi transparente y aún así mantener la ventana con la opacidad completa en caso de que quiera superponer algunos controles en la pantalla. –
La segunda solución funciona, pero tiene el mismo aspecto que configurar la Opacidad en 0.01. –
Simplemente configure Background = Brushes.Transparent en lugar de Background = null.
No necesita usar opacidad (es decir, simplemente déjelo al 100% de opacidad).
Probé esto, pensando en la misma posibilidad, pero no funciona. Cuando el Fondo es transparente, el programa no captura los clics, sino que se apropia del programa que se encuentre debajo. –
¿Puedes mostrar un ejemplo? Uso este enfoque (generalmente # 00000000 porque es muy fácil de escribir) y parece funcionar bien para mí. – Egor
Al establecer la opacidad en 100% (o en cualquier valor distinto de cero), y el fondo en Transparente (en lugar de nulo), la mayoría de los controles se pueden hacer visibles.
Asegúrese de establecer IsHitTestVisible en verdadero. No todos los controles pueden ser afectados, incluso si la opacidad es del 100% y el fondo es transparente.
Tal vez estoy haciendo algo mal, pero cuando hago un Show en una ventana con estos ajustes no aparece en absoluto (es decir, la ventana no está presente cuando alt + tab). –
En Visual Studio 2010: Seleccione su ventana en la vista de diseño.
Establecer las propiedades de la ventana para:
- AllowsTransparency: comprobar que
- Antecedentes: Transparente
- WindowStyle: Ninguno
No estoy seguro de por qué esto no obtuvo ningún +1, ¡funciona perfectamente! – JMK
@JMK Porque esto hace que los clics pasen a través de la ventana, a menos que aciertes un control real dentro de la ventana. – prettyvoid
La clave para mí fue "Permitir la transparencia" – ariel
Por ejemplo creo que su nombre de control es MyGrid
y usted quiere que sea Transparent
y siempre obtenga MouseOverEvent
.....
Si (ventana AllowsTransparency
es True
y la ventana Background
es Transparent
) Entonces
uso un color como
#01777777
paraMyGrid
Background
O0.01
paraMyGrid
Opacity
.
Else
uso algo así como
#00777777
paraMyGrid
Background
O0.00
paraMyGrid
Opacity
.
Puede que le resulte más sencillo usar Mouse.Capture
.
https://msdn.microsoft.com/en-us/library/ms771301.aspx
Cuando un objeto captura el ratón, todos los eventos relacionados con el ratón son tratados como si el objeto con la captura del mouse realizar el evento, incluso si el puntero del ratón se encuentra sobre otro objeto.
- 1. Cómo crear una ventana semitransparente en WPF que permite que los eventos del mouse pasen
- 2. Manejo de eventos de mouse en la ventana transparente condicionalmente
- 3. ¿Cómo puedo hacer que una ventana sea invisible para los eventos del mouse en WPF?
- 4. ¿Cómo se interceptan los eventos del mouse de una ventana transparente?
- 5. Cómo crear JButton parcialmente transparente en JFrame completamente transparente?
- 6. Eventos globales del mouse
- 7. Capturar eventos de mouse de cada componente en C# WInForm
- 8. android.R.color.transparent no completamente transparente
- 9. ventana pygtk con recuadro que ignora todos los eventos X (mouse) (los pasa)
- 10. Linux, cómo capturar pantalla y simular movimientos del mouse
- 11. Ventana transparente de Java
- 12. ¿Hay alguna manera de desactivar algún elemento DOM para capturar eventos del mouse?
- 13. Crear un agujero transparente en el interior de fondo de una ventana - WPF
- 14. Capturar ventana cerrar evento
- 15. Manejo de eventos del mouse con cvSetMouseCallback
- 16. Controlador global de eventos del mouse
- 17. Recomendaciones para crear una ventana de registro en WPF
- 18. Control del navegador web: cómo capturar eventos del documento?
- 19. Evento de mouse en fondo transparente
- 20. ¿Cómo puedo capturar todos los eventos del mouse en un JFrame/Swing?
- 21. controles superpuestos C# wpf que no reciben eventos de mouse
- 22. Haciendo un color completamente transparente en OpenCV
- 23. NSWindow: Pasar eventos del mouse a través de la ventana a lo que está debajo
- 24. WPF: existe la posibilidad de "enrutar" eventos de mouse normales para tocar eventos en Windows 7
- 25. Ventana transparente (o dibujar en la pantalla) Sin captura de mouse
- 26. Uso de ncurses para capturar clics del mouse en una aplicación de consola
- 27. elemento opaco en una transparente en WPF
- 28. Mouse Move not trigger outside WPF Ventana principal
- 29. ¿Puedo usar Python para capturar eventos de teclado y mouse en OSX?
- 30. Creando una ventana transparente en C++ Win32
Las ventanas transparentes pueden causar problemas en general, soy un poco curioso por qué se fue con este enfoque. Entiendo que 3.5 SP1 resolvió algunos de los principales problemas, pero aún así es una forma bastante pesada de atrapar la entrada del mouse. Si ya puede tomar la pantalla, ¿sería mejor hacerlo dentro de la ventana de la aplicación? – Egor