こんにちは。先日はありがとうございました。 また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個指定できるコンストラクタがありません。 とエラーになっています。 このときどうしたらよいでしょう? アドバイスお願いします。
分類:[.NET]