С# WPF Щелчок мыши порождает фигуру из центра щелчка

Я работаю над практическим приложением, которое добавляет синие квадраты на холст, когда вы щелкаете внутри холста. Одним из требований является то, что фигура добавляется в этой точке, а мышь представляет собой центр новой фигуры.

По умолчанию точка щелчка мыши будет в левом верхнем углу квадрата. Есть ли способ заставить квадрат появляться из центра щелчка мыши, а не в правом верхнем углу?

Вот как я сейчас добавляю свои квадраты на холст:

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

person user2453973    schedule 28.01.2014    source источник


Ответы (1)


Все, что вам нужно сделать, это сдвинуть прямоугольник на половину ширины и высоты прямоугольника, см. следующий код:

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