我想通過使用最頂層的透明非模態窗口來捕獲WPF中的鼠標事件。我發現如果窗口的不透明度爲0.01或更高,並且它具有背景顏色,那麼此工作正常,但當不透明度設置爲0時,它不再接收鼠標消息。有沒有辦法讓這個窗口看起來完全透明,並仍然得到鼠標輸入?創建一個完全透明的WPF窗口來捕獲鼠標事件
回答
據我所知,沒有。
當一個Control
或Window
是完全透明的,它可以被點擊。如果您設置了Window.Background="Transparent"
或Opacity="0"
,則是這種情況。據我所知,這是WPF設計的。
當使用0.01的不透明度時,您應該幾乎看不到窗戶。這可能是您實現功能的最佳選擇。
編輯:另一種解決方案,我試過並且確實有效,是將背景色設置爲幾乎透明的顏色。我使用了Background="#01000000"
,因此alpha值爲1.這使得您的窗口背景透明,但允許您在完全不透明的窗口上放置控件。
是的,我找不到解決方法。這說得通。 – 2009-10-29 20:52:16
請參閱我的編輯以獲取其他解決方案。您可以將背景更改爲接近透明的顏色,並且仍然保持窗口處於完全不透明狀態,以便在屏幕上覆蓋一些控件。 – 2009-10-29 20:56:27
第二種解決方案確實有效,但它看起來與將不透明度設置爲0.01相同。 – 2009-10-29 21:25:03
只需設置Background = Brushes.Transparent而不是Background = null。
根本不需要使用不透明度(即將它保持在100%不透明度)。
我試過了,想着同樣的可能性,但它不起作用。當背景透明時,程序不會捕獲點擊,而是抓取下面的任何程序。 – 2009-10-29 20:49:58
你能舉個例子嗎?我使用這種方法(通常#00000000,因爲它很容易輸入),它似乎對我來說工作得很好。 – Egor 2009-11-01 09:15:36
將不透明度設置爲100%(或任何非零值),透明背景(而不是空值)應使大多數控件可以使用。
確保將IsHitTestVisible設置爲true。即使不透明度爲100%並且背景透明,也不是所有的控件都可以被擊中。
也許我做錯了什麼,但是當我使用這些設置在窗口上進行顯示時,它根本不會顯示(即,當您使用Alt + Tab時窗口不存在)。 – 2009-10-29 21:55:18
在Visual Studio 2010中: 在您的設計視圖中選擇您的窗口。
設置你的窗口的屬性:
- AllowsTransparency:檢查
- 背景:透明
- WindowStyle:無
不知道爲什麼這沒有得到任何+1,它完美的作品! – JMK 2012-07-13 16:31:28
@JMK因爲這會使點擊穿過窗口,除非你在窗口內部打開了一個實際的控件。 – prettyvoid 2015-08-11 16:20:31
我的關鍵是「AllowsTransparency」 – ariel 2016-12-29 17:14:02
例如,我覺得你的控件名稱是MyGrid
和你想要它Transparent
,總是得到MouseOverEvent
.....
如果(窗口AllowsTransparency
是True
和窗口Background
是Transparent
)然後
使用色性好
#01777777
爲MyGrid
Background
或者0.01
爲MyGrid
Opacity
。
否則
使用像
#00777777
爲MyGrid
Background
或者0.00
爲MyGrid
Opacity
。
您可能會發現使用Mouse.Capture
更簡單。
https://msdn.microsoft.com/en-us/library/ms771301.aspx
當對象捕獲鼠標,所有的鼠標相關的事件被視爲如果與鼠標捕獲對象執行的情況下,即使鼠標指針位於另一個對象。
- 1. 如何用MFC創建一個完全透明的窗口?
- 2. 捕獲鼠標鬆開事件/窗口
- 3. 透明窗口(或繪製到屏幕)沒有鼠標捕獲
- 4. 窗口的背景中創建一個透明的孔 - WPF
- 5. 做了一個矩形完全透明(窗口中的一個洞)WPF
- 6. 有條件地在透明窗口上處理鼠標事件
- 7. 如何攔截透明窗口的鼠標事件?
- 8. 透明控件不捕獲鼠標事件
- 9. 如何創建一個鼠標透明的通知彈出窗口?
- 10. 如何在WPF中創建允許鼠標事件通過的半透明窗口
- 11. 創建一個半透明窗口或透明的窗口trasparent到鼠標事件,除了控件添加到表格
- 12. 在非透明父窗口(win 32)上創建一個透明子窗口
- 13. 如何捕獲發生在(WPF)窗口之外的鼠標事件?
- 14. JavaFx透明窗口 - 是的請。鼠標透明 - 不,謝謝
- 15. 對窗口應該做什麼對鍵盤和鼠標是完全透明的?
- 16. 在透明窗口wpf webbrowser
- 17. 捕獲鼠標被捕獲但窗口未聚焦的鍵盤事件(Win32)
- 18. node webkit-從父窗口捕獲iframe鼠標事件
- 19. 使窗口的標題欄完全透明
- 20. 捕獲(捕獲)Java中的窗口中的鼠標光標
- 21. 透明背景上的鼠標事件
- 22. 捕獲鼠標事件
- 23. 在透明窗口中獲取鼠標位置
- 24. Winforms:如何在透明表單上獲取透明控件的鼠標事件
- 25. 如何創建一個完全透明的導航欄?
- 26. 完全呈現哪個事件後,打印wpf窗口?
- 27. 完全透明的面具 - >完全不透明的部件
- 28. 透明度和鼠標事件WinForms
- 29. 可以用map v2創建一個透明的信息窗口?
- 30. 在MFC中創建透明窗口
透明窗口可能會導致一般問題,我有點好奇你爲什麼採用這種方法。我知道3.5 SP1解決了一些主要問題,但仍然是一種非常沉重的方式來捕捉鼠標輸入。我已經可以接管屏幕了,也許在應用程序窗口本身內執行此操作會更好? – Egor 2009-11-01 09:26:54