イベントをトリガーするこれらの3つの機能があります。私はすでに私のニーズの静的バージョンを持っていますが、動的バージョンが必要です。ドラッグ可能なキャンバスに矩形を作るにはどうしたらいいですか?
bool captured = false;
double x_shape, x_canvas, y_shape, y_canvas;
UIElement source = null;
private void MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
source = (UIElement)sender;
Mouse.Capture(source);
captured = true;
x_shape = Canvas.GetLeft(source);
x_canvas = e.GetPosition(canvasPreview).X;
y_shape = Canvas.GetTop(source);
y_canvas = e.GetPosition(canvasPreview).Y;
}
private void MouseMove(object sender, MouseEventArgs e)
{
//MessageBox.Show("test");
if (captured)
{
double x = e.GetPosition(canvasPreview).X;
double y = e.GetPosition(canvasPreview).Y;
x_shape += x - x_canvas;
Canvas.SetLeft(source, x_shape);
x_canvas = x;
y_shape += y - y_canvas;
Canvas.SetTop(source, y_shape);
y_canvas = y;
}
}
private void MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Mouse.Capture(null);
captured = false;
}
は、私が「canvasPreview」と呼ばれるWPFのキャンバスが、私はキャンバスに(現在の静的バージョンでは、私は楕円を使用しています)四角形を追加したい作られてきた、それは上記の機能を持つドラッグ可能でなければなりません。すでに動作していますが、動的にする必要があります。
私があなたを助けてくれることを願っております、ありがとうございます!
は、どのようにそれがない場合は、動的に取り組んでいますか?それは正確に何を意味するのは動的でなければならないのですか?シェイプはドラッグされませんか? – Joe
すみません。静的バージョンは動作していますが、静的ではWPFで作成された楕円はドラッグ可能ですが、楕円(矩形である必要があります)を生成しようとするとドラッグ可能ではありませんが、関数は呼び出されます。 –
関数はキャンバス内にありますか?ブレークポイントをドロップして矩形をドラッグしようとすると、MouseLeftButtonDownに設定されている「ソース」は何ですか? – Joe