需要做一些设置,主要
HorizontalAlignment 和 VerticalAlignment 必须设置为左上角
现在打开 cs 代码,在按下和移动修改矩形
MouseDown += MainWindow_MouseDown;
MouseMove += MainWindow_MouseMove;
MouseUp += MainWindow_MouseUp;
需要两个字段来记录当前是否按下和第一次按下所在的坐标
刚才给 Grid 的命名就是为了拿到相对 Grid 的坐标
private void MainWindow_MouseDown(object sender, MouseButtonEventArgs e)
{
_started = true;
_downPoint = e.GetPosition(Grid);
}
private bool _started;
private Point _downPoint;
在鼠标按下时拿到按下的坐标,通过这个坐标就可以计算出矩形所在的位置
private void MainWindow_MouseUp(object sender, MouseButtonEventArgs e)
{
_started = false;
}
private void MainWindow_MouseMove(object sender, MouseEventArgs e)
{
if (_started)
{
var point = e.GetPosition(Grid);
var rect = new Rect(_downPoint, point);
Rectangle.Margin = new Thickness(rect.Left, rect.Top, 0, 0);
Rectangle.Width = rect.Width;
Rectangle.Height = rect.Height;
}
}










