気楽なソフト工房

プログラミングについていろいろな記事を書いています。



mykonos2008

Author:mykonos2008
システムエンジニアとして働いている30代の会社員です。
仕事や趣味でプログラムを書いている方の役に立つ記事を書いていきたいと思っています。
ご意見、ご感想はこちらまで
If you are an english speaker,Please visit my english blog.

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
久しぶりのC#の記事を書かせていただきます。最近、WPFの透過ウィンドウを使った
アプリを企画しています。そこで本日は透過ウィンドウアプリを作るためのTipsを紹介します。

ウィンドウを透過する
WPFでウィンドウを透過するのはとても簡単に出来ます。
Windowクラスの「AllowsTransparency」をtrueに、「Background」を「Transparent」に
WindowStyleを「None」に設定するだけで完了です。

ちなみに「AllowsTransparency」をtrueにした場合、必ず、WindowStyleを「None」にしないと
Exceptionが発生します。

 <Window ・・・ AllowsTransparency="True" Background="Transparent" WindowStyle="None">

このままでは本当に何も表示されないので、ウィンドウに「Ellipse」オブジェクトを配置しました。

WindowStyleを「None」に設定しているため、ウィンドウのタイトルバーが表示されません。
そのため、ウィンドウを閉じたり、移動することが出来なくなります。

コンテキストメニューでアプリケーションを終了する
まず、アプリケーションをコンテキストメニューで終了できるようにします。

まず以下のようにして、XAMLでウィンドウにコンテキストメニューを設定します。

    <Window.ContextMenu>
        <ContextMenu Name="_menu" StaysOpen="true">
            <MenuItem Header="Exit" Click="Exit_Click" />
        </ContextMenu>
    </Window.ContextMenu>

そして、コンテキストメニューがクリックされるとウィンドウを閉じるようにします。

   //Exitメニューのハンドラ
   //Windowを閉じる
   private void Exit_Click(object sender, RoutedEventArgs e)
   {
       Close();
   }

マウスでウィンドウを移動させる
タイトルバーが無いので、このままではウィンドウを移動させることが出来ません。

以下のようにすることで、ウィンドウ内のオブジェクト、今回のアプリの場合、
「Ellipse」オブジェクト内でマウスの左ボタンをクリックし、マウスを動かすことで
ウィンドウを移動させることが出来るようになります。

  protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
  {
      base.OnMouseLeftButtonDown(e);

      try
      {
          DragMove();
      }
      catch { }
  }

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://csfun.blog49.fc2.com/tb.php/57-2493e082

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。