마우스 이벤트를 캡처하기 위해 완전히 투명한 WPF 창을 만듭니다.
-
22-07-2019 - |
문제
최상위의 투명한 비 모달 창을 사용하여 WPF에서 마우스 이벤트를 가두려고합니다. 창의 불투명도가 0.01 이상이고 배경색이 있지만 불투명도가 0으로 설정되면 더 이상 마우스 메시지를받지 않으면 이것이 잘 작동한다는 것을 알게됩니다. 이 창이 완전히 투명하게 보이고 마우스 입력을 얻는 방법이 있습니까?
해결책
내가 아는 한, 아니요.
A. Control
또는 Window
완전히 투명하며 클릭 할 수 있습니다. 당신이 당신을 설정하는 경우입니다 Window.Background="Transparent"
, 또는 Opacity="0"
. 내가 아는 한, 이것은 WPF의 디자인에 의한 것입니다.
불투명도 0.01을 사용하면 창을 간신히보아야합니다. 이것은 기능을 달성하는 데 가장 좋은 방법 일 것입니다.
편집하다: 내가 시도하고 작동하는 또 다른 해결책은 배경색을 거의 트랜스 컬러로 설정하는 것입니다. 나는 사용했다 Background="#01000000"
, 따라서 알파 값이 1입니다. 이렇게하면 창 배경이 투명하게 보이지만 창을 완전히 불투명하게 사용하여 컨트롤을 배치 할 수 있습니다.
다른 팁
Visual Studio 2010 : 디자인보기에서 창을 선택하십시오.
창의 속성을 다음으로 설정하십시오.
- enlowtransparency : 확인하십시오
- 배경 : 투명
- Windowstyle : 없음
배경 = brushes.transparent를 배경 = null로 설정하십시오.
불투명도를 전혀 사용할 필요는 없습니다 (예 : 100% 불투명도로 두십시오).
예를 들어 귀하의 제어 이름이 생각합니다 MyGrid
그리고 당신은 그것을 원합니다 Transparent
그리고 항상 얻습니다 MouseOverEvent
.....
만약에 (창문 AllowsTransparency
~이다 True
그리고 창 Background
~이다 Transparent
) 그 다음에
사용 색상
#01777777
~을 위한MyGrid
Background
또는0.01
~을 위한MyGrid
Opacity
.
또 다른
사용 같은 것
#00777777
~을 위한MyGrid
Background
또는0.00
~을 위한MyGrid
Opacity
.
불투명도를 100% (또는 0이 아닌 값)로 설정하고 배경을 투명하게 (NULL 대신) 대부분의 컨트롤을 hittable로 만들어야합니다.
설정해야합니다 ishittestvesible 사실. 불투명도가 100%이고 배경이 투명하더라도 모든 컨트롤을 치를 수있는 것은 아닙니다.
사용하기가 더 간단 할 수 있습니다 Mouse.Capture
.
https://msdn.microsoft.com/en-us/library/ms771301.aspx
물체가 마우스를 캡처하면 마우스 포인터가 다른 물체 위에 있더라도 마우스 캡처가있는 객체가 이벤트를 수행하는 것처럼 모든 마우스 관련 이벤트가 처리됩니다.