2013年05月14日

WPFサンプル:マウスポインタの移動を感知する

   このエントリーをはてなブックマークに追加 Clip to Evernote
マウスカーソルに追随して、コントロールが移動するコードを書いてみました。

MouseCapture1

MouseCapture3

まずは、XAML。


Canvas の中に、Ellipse を配置します。Ellipse では、Fill で塗りつぶしの色を設定しています。これがないと、Ellipse でのマウス関連のイベントを拾うことができません。WPF では、Ellipse に限らず、Background やFillが未設定だと、非表示状態であるという認識になり、マウスイベントを受け取れなくなるようです。

ここでは3つのイベントハンドラを設定しています。マウスが動いているかどうかは、MouseMove イベントだけを見ればよいのですが、この例では、マウスボタンが押されている時だけ処理をさせたいので、MouseDown,MouseUp イベントも使います。

では、C#です。


ここでは、CaptureMouse()がカギです。これが無いと、素早くマウスを動かしたときに、マウスカーソルが、Ellipse の外側に動いていしまい、Ellipse では、MouseMOve, MouseUp イベントを拾うことが出来ずに、移動がマウスに追随しなくなってしまいます。
CaptureMouse で、マウスを強制的に捕捉し続けるようにし、移動を終了する時に、ReleaseMouseCapture で、捕捉を終了しています。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52318831