创建一个完全透明的WPF窗口来捕获鼠标事件

Jam*_*add 14 wpf mouse transparency

我试图通过使用最顶部,透明的非模态窗口来捕获WPF中的鼠标事件.我发现如果窗口的不透明度为0.01或更高并且它具有背景颜色,这可以正常工作,但是当不透明度设置为0时,它不再接收鼠标消息.有没有办法让这个窗口看起来完全透明,仍然可以输入鼠标?

Wil*_*ins 32

据我所知,没有.

当a ControlWindow完全透明时,可以点击它.如果你设置你的Window.Background="Transparent",那就是这种情况Opacity="0".据我所知,这是WPF设计的.

当使用0.01的不透明度时,你几乎看不到窗口,如果有的话.这可能是您实现功能的最佳选择.

编辑:我尝试并且确实有效的另一种解决方案是将背景颜色设置为几乎透明的颜色.我使用了Background="#01000000",因此给出了1的alpha值.这使得你的窗口背景看起来很透明,但允许你在窗口上以完全不透明的方式放置控件.

  • 实际上,即使是完全透明的颜色值也可以 - 我为此目的使用#00000000.它的工作原理是因为Opacity不是0,并且画笔是solidcolorbrush - alpha值似乎没有被考虑.Brushes.Transparent也有效,因为它只是一个#00FFFFFF solidcolorbrush (7认同)
  • @Egor:当我尝试此操作时,透明笔刷导致窗口被点击。这是在.NET 3.5 SP1上...所以可能是其他版本? (2认同)

小智 12

在Visual Studio 2010中:在设计视图中选择窗口.

将窗口的属性设置为:

  • 允许透明度:检查它
  • 背景:透明
  • WindowStyle:无

  • 不知道为什么这没有得到任何+ 1,它完美的工作! (2认同)