C#WPF--鼠标单击从单击中心生成形状

C#WPF--鼠标单击从单击中心生成形状,c#,wpf,canvas,mouseclick-event,C#,Wpf,Canvas,Mouseclick Event,我正在开发一个实践应用程序,当您在画布内单击时,它会将蓝色方块添加到画布中。其中一个要求是在该点添加形状,鼠标代表新形状的中心。 默认情况下,鼠标的单击点将位于正方形的左上角。有没有办法让正方形从鼠标点击的中心而不是右上角生成 这是我当前将方块添加到画布的方式: private void canvasArea_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Shape Rendershap

我正在开发一个实践应用程序,当您在画布内单击时,它会将蓝色方块添加到画布中。其中一个要求是在该点添加形状,鼠标代表新形状的中心。

默认情况下,鼠标的单击点将位于正方形的左上角。有没有办法让正方形从鼠标点击的中心而不是右上角生成

这是我当前将方块添加到画布的方式:

    private void canvasArea_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {

        Shape Rendershape = null;

        switch (Shape1)
        {
            case SelectedShape.Rectangle:
                Rendershape = new Rectangle() 
                { 
                    Fill = Brushes.Blue, 
                    Height = num1, 
                    Width = num2
                };
                break;
            default:
                return;
        }

        Canvas.SetLeft(Rendershape, e.GetPosition(canvasArea).X);
        Canvas.SetTop(Rendershape, e.GetPosition(canvasArea).Y);
        canvasArea.Children.Add(Rendershape);
    }

您只需将矩形的宽度和高度移动一半,请参见以下代码:

Canvas.SetLeft(Rendershape, e.GetPosition(canvasArea).X - ( Rendershape.Width / 2.0 ) );
Canvas.SetTop(Rendershape, e.GetPosition(canvasArea).Y - ( Rendershape.Height / 2.0 ) );