마우스 이벤트를 캡처하기 위해 완전히 투명한 WPF 창을 만듭니다.

StackOverflow https://stackoverflow.com/questions/1646346

  •  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

물체가 마우스를 캡처하면 마우스 포인터가 다른 물체 위에 있더라도 마우스 캡처가있는 객체가 이벤트를 수행하는 것처럼 모든 마우스 관련 이벤트가 처리됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top