在Canvas上移动一组元素

时间:2014-04-09 06:56:42

标签: c# wpf

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

我用来绘制此信号的示例代码如下所示。

        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。

1 个答案:

答案 0 :(得分:0)

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

Dragging Elements in a Canvas from Josh Smith以及适应Josh Smith代码的Dragging Elements in a Canvas from igkutikov之后。有#mustread类别的文章。

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