【问题标题】:Moving a group of elements on Canvas在 Canvas 上移动一组元素
【发布时间】:2014-04-09 14:59:40
【问题描述】:

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

我用来绘制这个信号的示例代码如下。

        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。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    如果想实现一个画布来拖动元素,DragCanvas 是你的选择。

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

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

    【讨论】:

    • 其实我的问题是“如何将这些元素集分组并将组移动为单个元素”
    猜你喜欢
    • 1970-01-01
    • 2020-04-24
    • 2020-10-04
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    相关资源
    最近更新 更多