C# 将椭圆添加到鼠标位置?

C# 将椭圆添加到鼠标位置?,c#,wpf,C#,Wpf,我正在尝试从鼠标位置向网格添加椭圆。如何定义椭圆的绘制位置 以下是我的鼠标按下事件: private void GridCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { _sensorPoint = Mouse.GetPosition(GridCanvas); AddSensor(); } 还有我的AddSensor()方法: 如何在画布上单击鼠标的位置添加sensorEllipse 您可以使

我正在尝试从鼠标位置向网格添加椭圆。如何定义椭圆的绘制位置

以下是我的鼠标按下事件:

private void GridCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    _sensorPoint = Mouse.GetPosition(GridCanvas);
    AddSensor();
}
还有我的AddSensor()方法:


如何在画布上单击鼠标的位置添加sensorEllipse

您可以使用以下任何方法设置位置:

private void AddSensor()
{
        Ellipse sensorEllipse = new Ellipse();
        SolidColorBrush solidColorBrush = new SolidColorBrush();

        solidColorBrush.Color = Color.FromArgb(0, 0, 0, 0);

        sensorEllipse.Fill = solidColorBrush;

        sensorEllipse.SetValue(Canvas.LeftProperty, _sensorPoint.X);
        sensorEllipse.SetValue(Canvas.TopProperty, _sensorPoint.Y);

        //Canvas.SetLeft(sensorEllipse, _sensorPoint.X);
        //Canvas.SetTop(sensorEllipse, _sensorPoint.Y);

        sensorEllipse.StrokeThickness = 2;
        sensorEllipse.Stroke = Brushes.Black;
        sensorEllipse.Width = 10;
        sensorEllipse.Height = 10;

        //adding event handler for right mouse down:
        sensorEllipse.MouseRightButtonDown += new MouseButtonEventHandler(sensorEllipse_MouseRightButtonDown);

        GridCanvas.Children.Add(sensorEllipse);
}
编辑 要添加/删除省略号,请检查在
GridCanvas\u MouseLeftButtonDown

private void GridCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
  _sensorPoint = Mouse.GetPosition(GridCanvas);
  AddSensor();
}
然后为新省略号添加事件处理程序:

    void sensorEllipse_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
    {
        Ellipse ellipse = sender as Ellipse;
        GridCanvas.Children.Remove(ellipse);
    }

您可以使用以下任何方法设置位置:

private void AddSensor()
{
        Ellipse sensorEllipse = new Ellipse();
        SolidColorBrush solidColorBrush = new SolidColorBrush();

        solidColorBrush.Color = Color.FromArgb(0, 0, 0, 0);

        sensorEllipse.Fill = solidColorBrush;

        sensorEllipse.SetValue(Canvas.LeftProperty, _sensorPoint.X);
        sensorEllipse.SetValue(Canvas.TopProperty, _sensorPoint.Y);

        //Canvas.SetLeft(sensorEllipse, _sensorPoint.X);
        //Canvas.SetTop(sensorEllipse, _sensorPoint.Y);

        sensorEllipse.StrokeThickness = 2;
        sensorEllipse.Stroke = Brushes.Black;
        sensorEllipse.Width = 10;
        sensorEllipse.Height = 10;

        //adding event handler for right mouse down:
        sensorEllipse.MouseRightButtonDown += new MouseButtonEventHandler(sensorEllipse_MouseRightButtonDown);

        GridCanvas.Children.Add(sensorEllipse);
}
编辑 要添加/删除省略号,请检查在
GridCanvas\u MouseLeftButtonDown

private void GridCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
  _sensorPoint = Mouse.GetPosition(GridCanvas);
  AddSensor();
}
然后为新省略号添加事件处理程序:

    void sensorEllipse_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
    {
        Ellipse ellipse = sender as Ellipse;
        GridCanvas.Children.Remove(ellipse);
    }

检查。鼠标上的点是point类型,我需要将其拆分为两个double,以便使用Canvas.SetLeft()。我需要这样做吗?请检查。鼠标上的点是point类型,我需要将其拆分为两个双精度点,以便使用Canvas.SetLeft()。我需要这样做吗?非常感谢!我将如何从鼠标位置删除它们?是否希望在用户按住鼠标时添加椭圆,并在用户释放鼠标按钮时将其删除?我希望在用户左键单击时添加椭圆(我的代码就是这样做的)并在用户右键单击椭圆时将其删除。查看新添加的椭圆事件处理程序代码。非常感谢!我将如何从鼠标位置删除它们?是否希望在用户按住鼠标时添加椭圆,并在用户释放鼠标按钮时将其删除?我希望在用户左键单击时添加椭圆(我的代码就是这样做的),并在用户右键单击椭圆时将其删除。查看新添加的椭圆事件处理程序的新代码。