ウィンドウ枠のない WPF アプリを作成する

WPF アプリケーションを普通に作成すると、Windows 標準のウィンドウ枠が付いてきます。
また、このウィンドウ枠のある状態では、他のアプリケーションをまたいだ透明効果を有効にすることができません。

まず、ウィンドウ枠を消すには、Window.WindowStyle プロパティに None を設定します。
また、透明効果を付けるには Window.AllowsTransparency プロパティに True を設定するのですが、
そのためにはウィンドウ枠を消すことが必須です。
ちなみに Blend では、AllowsTransparency に True を設定すると、自動的に WindowStyle に None が設定されます。

(全体のソースコードは GitHub の BorderlessWpf にあります。)

このサンプルでは、Window.Background に null を設定しています。
Background="Transparent" としてもよいでしょう。
また、中央には透明度のある円を配置しています。

これを実行すると、図のように、下層にあるアプリケーションまで透過して見えるようになります。
円の周囲の完全に透明な領域では、マウスやタッチなどの入力が透過し、下層にあるアプリケーションにヒットします。

BorderlessWpf

 

しかし、ウィンドウ枠がなくなると、マウスのドラッグによりアプリケーションを移動できなくなってしまいます。
そこで、Window の MouseLeftButtonDown イベントで DragMove メソッドを実行することにより、
ウィンドウ全体をドラッグで移動できるようになります。

作成したサンプル
BorderlessWpf (GitHub)

参照
Window.AllowsTransparency プロパティ
Window.DragMove メソッド

カテゴリー: クライアント技術. タグ: . Leave a Comment »

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。