マウスイベントをキャプチャする完全に透明なWPFウィンドウを作成する

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

  •  22-07-2019
  •  | 
  •  

質問

最上位の透明な非モーダルウィンドウを使用して、WPFでマウスイベントをトラップしようとしています。ウィンドウの不透明度が0.01以上で背景色がある場合、これは正常に機能することがわかりましたが、不透明度を0に設定すると、マウスメッセージを受信しなくなります。このウィンドウを完全に透明に見せながらマウス入力を取得する方法はありますか?

役に立ちましたか?

解決

私が知る限り、いいえ。

Control または Window が完全に透明になると、クリックスルーできます。これは、 Window.Background =" Transparent" または Opacity =" 0" を設定した場合です。私の知る限り、これはWPFの仕様です。

0.01の不透明度を使用する場合、ウィンドウが表示されることはほとんどありません。これはおそらく、機能を実現するための最善策です。

編集:もう1つの解決策は、背景色をほぼ透明な色に設定することです。 Background ="#01000000" を使用して、アルファ値1を指定しました。これにより、ウィンドウの背景が透明に見えますが、完全な不透明度でウィンドウにコントロールを配置できます。

他のヒント

Visual Studio 2010の場合: デザインビューでウィンドウを選択します。

ウィンドウのプロパティを次のように設定します。

  • AllowsTransparency:チェック
  • 背景:透明
  • WindowStyle:なし

Background = nullの代わりにBackground = Brushes.Transparentを設定するだけです。

不透明度を使用する必要はまったくありません(つまり、不透明度を100%のままにしておきます)。

たとえば、コントロール名は MyGrid で、 Transparent にすると、常に MouseOverEvent になります.....

If (ウィンドウ AllowsTransparency True で、ウィンドウ Background が< code>透明)次に

  

MyGrid Background には #01777777 のような色を使用しますまたは 0.01 MyGrid Opacity の場合。

その他

  

使用 #00777777 のようなものを MyGrid Background または 0.00 MyGrid 不透明度

不透明度を100%(またはゼロ以外の値)に設定し、背景を透明(nullではなく)に設定すると、ほとんどのコントロールがヒット可能になります。

IsHitTestVisible を必ず設定してください。本当に。不透明度が100%で、背景が透明であっても、すべてのコントロールがヒットするわけではありません。

Mouse.Capture を使用する方が簡単な場合があります。

https://msdn.microsoft.com/en-us/library/ ms771301.aspx

  

オブジェクトがマウスをキャプチャすると、マウスポインターが別のオブジェクト上にある場合でも、すべてのマウス関連イベントは、マウスキャプチャのあるオブジェクトがイベントを実行するかのように扱われます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top