C# 在画布上移动一组元素

C# 在画布上移动一组元素,c#,wpf,C#,Wpf,我想在运行时在画布上绘制如下所示的信号图像 我用来画这个信号的示例代码如下 Ellipse Ellipse1 = new Ellipse(); Ellipse Ellipse2 = new Ellipse(); Ellipse Ellipse3 = new Ellipse(); Line lineV = new Line(); Line lineH = new Line(); lineV.Strok

我想在运行时在画布上绘制如下所示的信号图像

我用来画这个信号的示例代码如下

        Ellipse Ellipse1 = new Ellipse();
        Ellipse Ellipse2 = new Ellipse();
        Ellipse Ellipse3 = new Ellipse();
        Line lineV = new Line();
        Line lineH = new Line();

        lineV.Stroke = SystemColors.WindowFrameBrush;
        lineV.X1 = EndPosition.X;
        lineV.Y1 = EndPosition.Y;
        lineV.X2 = StartPosition.X;
        lineV.Y2 = EndPosition.Y;
        SolidColorBrush redBrush = new SolidColorBrush();
        redBrush.Color = Colors.Black;
        lineV.StrokeThickness = 2;
        lineV.Stroke = redBrush;

       canvas1.Children.Add(lineV);

        lineH.Stroke = SystemColors.WindowFrameBrush;
        lineH.X1 = StartPosition.X;
        lineH.Y1 = EndPosition.Y;
        lineH.X2 = StartPosition.X;
        lineH.Y2 = StartPosition.Y;
        redBrush.Color = Colors.Black;
        lineH.StrokeThickness = 2;
        lineH.Stroke = redBrush;

        canvas1.Children.Add(lineH);

        SolidColorBrush mySolidColorBrush1 = new SolidColorBrush();
        mySolidColorBrush1.Color = Colors.Red; //FromArgb(255, 255, 255, 0);
        Ellipse1.Fill = mySolidColorBrush1;
        Ellipse1.StrokeThickness = 2;
        Ellipse1.Stroke = Brushes.Black;
        Ellipse1.Width = 30;
        Ellipse1.Height = 30;
        Ellipse1.Margin = new Thickness(EndPosition.X, EndPosition.Y - 15, EndPosition.X + 50, EndPosition.Y + 50);

        canvas1.Children.Add(Ellipse1);

        SolidColorBrush mySolidColorBrush2 = new SolidColorBrush();
        mySolidColorBrush2.Color = Colors.Green; //FromArgb(255, 255, 255, 0);
        Ellipse2.Fill = mySolidColorBrush2;
        Ellipse2.StrokeThickness = 2;
        Ellipse2.Stroke = Brushes.Black;
        Ellipse2.Width = 30;
        Ellipse2.Height = 30;
        Ellipse2.Margin = new Thickness(EndPosition.X + 30, EndPosition.Y - 15, EndPosition.X + 60, EndPosition.Y + 50);

        canvas1.Children.Add(Ellipse2);

        SolidColorBrush mySolidColorBrush3 = new SolidColorBrush();
        mySolidColorBrush3.Color = Colors.Yellow; // FromArgb(255, 255, 255, 0);
        Ellipse3.Fill = mySolidColorBrush3;
        Ellipse3.StrokeThickness = 2;
        Ellipse3.Stroke = Brushes.Black;
        Ellipse3.Width = 30;
        Ellipse3.Height = 30;
        Ellipse3.Margin = new Thickness(EndPosition.X + 60, EndPosition.Y - 15, EndPosition.X + 150, EndPosition.Y + 50);

       canvas1.Children.Add(Ellipse3);
**现在,我希望用户能够在鼠标移动事件的画布上以交互方式移动此信号

我怎样才能做到这一点?**


我正在使用C#WPF

如果要实现画布来拖动元素,可以选择拖动画布

然后改编Josh Smith代码。有些文章属于#mustread类别

使用dragCanvas,您可以实现完整的功能性拖动元素画布,并更好地适应您的代码。快乐编码

实际上,我的问题是“如何将这些元素集分组并将组作为单个元素移动”