C#WPF - 鼠标单击从中心点击产生的形状

时间:2014-01-28 16:36:07

标签: c# wpf canvas mouseclick-event

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

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

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

    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);
    }

1 个答案:

答案 0 :(得分:2)

您需要做的就是将矩形移动矩形的宽度和高度的一半,请参阅以下代码:

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