試してみよう: 四角形でないウィンドウの作成
Microsoft Expression Blend アプリケーションでは、実行時に四角形以外の形状で表示されるウィンドウを作成する場合があります。この一般的な例としては、デスクトップ アプレット、ウィジェット、メディア プレーヤーがあります。四角形以外のウィンドウを作成するには、アプリケーションの Window オブジェクトのプロパティをいくつか変更し、タイトル バーを使用せずにウィンドウを移動できるイベント ハンドラー メソッドを作成します。
四角形以外のウィンドウを透明にする
[オブジェクトとタイムライン] パネルで Window オブジェクトを選択し、[プロパティ] パネルの [外観] で WindowStyle プロパティを None に変更して、ウィンドウ シェル (タイトル バー) を削除します。F5 キーを押して、既定のシェルのないウィンドウの外観を確認します。[最小化]、[最大化]、[元に戻す]、[閉じる] の各標準ボタンは表示されません。ウィンドウをドラッグすることもできません。Alt キーを押しながら F4 キーを押して、ウィンドウを閉じます。
メモ : その他の WindowStyle オプションについては、MSDN の「WPF ウィンドウの概要 」にある「WindowStyle」を参照してください。
[プロパティ] パネルの [外観] で [AllowsTransparency] チェック ボックスをオンにします。ウィンドウの境界が表示されなくなります。
ウィンドウの透明度を高めるには、[プロパティ] パネルの [ブラシ] で Window オブジェクトの Background プロパティを [ブラシなし] に設定します。ユーザーがウィンドウの目に見えない領域をクリックできるようにする場合は、Background プロパティを [単色ブラシ] に設定し、背景ブラシの Alpha プロパティを 1 に設定することもできます。こうすると、ウィンドウのクリック可能な領域を非表示のまま維持できます。
最後に、[オブジェクトとタイムライン] パネルの [LayoutRoot] をクリックしてこのオブジェクトを有効にし、[ツール] パネルからアートボードにオブジェクトを追加します。要素の OpacityMask ブラシを設定して、さまざまな効果を作成します。
詳細については、「不透明度マスクの作成」を参照してください。
[楕円] や [ペン] などの描画ツールを使用して図形やパスを描いたり、オブジェクトを他のオブジェクトの後ろに移動したりできます (オブジェクトを右クリックして [順序] をクリックします)。LayoutRoot の内容によって、アプリケーションのおおよその外形が決まることになります。
もう一度 F5 キーを押して、ウィンドウの外観を確認します。まだ、ウィンドウをドラッグすることはできません。Alt キーを押しながら F4 キーを押して、ウィンドウを閉じます。
実行時にウィンドウのドラッグを有効にするコードの追加
ウィンドウを透明にすると、タイトル バーのないウィンドウの位置を変更できなくなります。ウィンドウを再び移動できるようにするには、ウィンドウにイベント ハンドラーを追加し、関連する分離コード ファイルに小さなコードを追加する必要があります。
[ファイル] メニューで [すべて保存] をクリックして、プロジェクトをハード ディスクに保存します(一度も保存されていないプロジェクトにイベント ハンドラー メソッドを追加することはできません)。
[オブジェクトとタイムライン] パネルで Window を選択した状態で、[プロパティ] パネルの [イベント] をクリックします。
MouseLeftButtonDown の横に「OnMouseLeftButtonDown」と入力し、 Enter キーを押します。
分離コード ファイルのイベント ハンドラー メソッドを次のように変更します。
private void OnMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { this.DragMove(); }
Private Sub OnMouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Me.DragMove() End Sub
F5 キーを押してアプリケーションを実行します。
その他のイベント ハンドラー メソッドも追加できます。たとえば、ボタンの Click イベントが発生したときに分離コード ファイルの
Close()
メソッドを呼び出すメソッドを作成できます。イベント ハンドラー メソッドを作成する方法の詳細については、「イベントに応答するコードを記述」を参照してください。
Copyright ©2011 by Microsoft Corporation. All rights reserved.