1

マウスの位置からグリッドに楕円を追加しようとしています。楕円が描画される場所を定義するにはどうすればよいですか?

ここに私のマウスダウンイベントがあります:

private void GridCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    _sensorPoint = Mouse.GetPosition(GridCanvas);
    AddSensor();
}

そして私の AddSensor() メソッド:

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


    solidColorBrush.Color = Color.FromArgb(0, 0, 0, 0);
    sensorEllipse.Fill = solidColorBrush;
    sensorEllipse.StrokeThickness = 2;
    sensorEllipse.Stroke = Brushes.Black;
    sensorEllipse.Width = 10;
    sensorEllipse.Height = 10;

    GridCanvas.Children.Add(sensorEllipse);
}

キャンバス上でマウスをクリックした場所に sensorEllipse を追加するにはどうすればよいですか?

4

1 に答える 1

1

これらの方法のいずれかで位置を設定できます。

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_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);
    }
于 2012-08-16T06:38:41.967 に答える