DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WPFでマウスの軌跡

  • 題名: WPFでマウスの軌跡
  • 著者: seventyfive
  • 日時: 2009/11/19 22:56:57
  • ID: 25878
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[WPF .NET3.5]
分類:[.NET]

こんにちは。先日はありがとうございました。
またWPFでわからないことが出て、質問いたします。
マウスの軌跡を取ろうとして次のコードを書きました。

private bool IsDragging;
private Point mousePoint;

private void Form1_MouseDown(object sender, MouseEventArgs e)    
{
    this.IsDragging = true;
}

private void Form1_MouseMove(object sender, MouseEventArgs e)    
{
    if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
    {
        mousePoint = new Point(e.X, e.Y);
        textBox1.Text = mousePoint.ToString() + "\r\n";
    }
}

private void Form1_MouseUp(object sender, MouseEventArgs e)    
{
    if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
    this.IsDragging = false;
}

これをWPFで実現したいと考えています。

まず、xamlで、
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" 
MouseMove="Window_MouseMove" MouseUp="Window_MouseUp"  MouseDown="Window_MouseDown" >
とイベントハンドラを割り当てました。

コード側にそっくりFormのコードを貼ったところ、
e.Button & MouseButtons.Left
の部分と、
mousePoint = new Point(e.X, e.Y);
のところでそのようなメソッドがない旨のエラーが出ました。

private bool IsDragging;
private Point mousePoint;

private void Window_MouseDown(object sender, MouseEventArgs e)    
{
    this.IsDragging = true;
}

private void Window_MouseMove(object sender, MouseEventArgs e)    
{
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        mousePoint = new Point(e.X, e.Y);
        textBox1.Text = mousePoint.ToString() + "\r\n";
    }
}

private void Window_MouseUp(object sender, MouseEventArgs e)    
{
    if (e.LeftButton == MouseButtonState.Pressed)    
        this.IsDragging = false;
}

最初の方は、マウスの左ボタンを押しているかどうかなので、
WPFの場合は、
if (e.LeftButton == MouseButtonState.Pressed)
となるようです。
あとは肝心のマウスの座標なのですが、これがわからずにいます。
それらしいのだと、
e.GetPosition
というのがあったので、
mousePoint = new Point(e.GetPosition);
とすると、
System.Windows.Pointに引数を1個指定できるコンストラクタがありません。
とエラーになっています。

このときどうしたらよいでしょう?
アドバイスお願いします。
  • 題名: Re[1]: WPFでマウスの軌跡
  • 著者: Hongliang
  • 日時: 2009/11/19 23:42:41
  • ID: 25879
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
> 最初の方は、マウスの左ボタンを押しているかどうかなので、
> WPFの場合は、
> if (e.LeftButton == MouseButtonState.Pressed)
> となるようです。
左ボタンを押しながら右ボタンを押したときも true になりますけどいいのでしょうか?

> あとは肝心のマウスの座標なのですが、これがわからずにいます。
> それらしいのだと、
> e.GetPosition
> というのがあったので、
> mousePoint = new Point(e.GetPosition);
> とすると、
> System.Windows.Pointに引数を1個指定できるコンストラクタがありません。
> とエラーになっています。
>
> このときどうしたらよいでしょう?
まずドキュメントを調べることでしょう。
e.GetPosition と記述して F1 を押せばヘルプが表示されるはずです。

DOBON.NET | プログラミング道 | プログラミング掲示板