我有这三个功能来触发事件。我已经有我的需求的静态版本,但我需要它的一个动态版本。如何在可拖动的画布上制作矩形?
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;
}
我已在WPF画布称为“canvasPreview”,我想补充的矩形(目前在静态版本我使用的是椭圆)到画布上,它必须是可拖动上面的功能。它已经在工作,但它必须是动态的。
我希望你能帮助我,谢谢你提前!
它是如何工作的,如果不是动态?你究竟意味着什么,必须是动态的?形状是否被拖拽? – Joe
对不起。静态版本工作,我的意思是与静态工作是,在WPF中创建的椭圆是可拖动的,但当我尝试生成一个椭圆(应该是一个矩形),它不是可拖动的,但函数被调用。 –
画布中的功能是?如果你放置一个断点并开始尝试拖动矩形,那么在MouseLeftButtonDown中设置的“源”是什么? – Joe