【问题标题】:Click interface Clarification (Entry-Level)点击界面澄清(入门级)
【发布时间】:2016-03-29 09:26:35
【问题描述】:

我正在尝试使用 WinForms 创建一个图形编辑器。

我有一个图片框,每当我点击它时,程序都会通过创建一个大约 15 像素大小的标签来绘制一个顶点,我在其中存储一个字符串、位置等。

我可以通过从一个位置到另一个位置绘制线条来绘制边缘,但是我需要其他框来执行此操作,我想知道是否有一种方法可以完全通过触摸(使用鼠标光标)来执行此操作。

我需要某种对象,如果单击该对象,它将启动一个事件,该事件将绘制一条边直到我接下来单击的顶点。我考虑添加小图片框而不是标签,但是标签便于存储顶点的名称,而且我认为在同一位置添加标签和其他框可能会隐藏其中一个对象。

【问题讨论】:

    标签: c# winforms user-interface


    【解决方案1】:

    您可以在用户控件单击事件上获取鼠标的 x 和 y 坐标。 我会存储您在鼠标单击事件之外单击的最后一个点的坐标,然后从最后一个点画一条线到新点。

    lastPoint = null;
    private void userControl_MouseClick(object sender, MouseEventArgs e) {
    
      if (e.Button == MouseButtons.Left)
      {
        Point newPoint = e.Location;
        if(lastPoint != null)
        {
          drawLine(lastPoint, newPoint);
        }
        lastPoint = newPoint;
    
      }
    }
    

    希望这会有所帮助。

    【讨论】:

    • 一切都有帮助。我已经有一个包含我的标签(及其位置)的列表,我想要做的是:标签到位后,再次单击它们并让一条线从一个标签位置准确地转到另一个位置,跨度>
    • 所以让我直截了当地说,您已经在表单上定义了标签。但是您希望使用选择标签对,其中将有一条线连接。例如,如果您在表单上有 4 个标签说:A、B、C、D,用户可以单击 A、D 然后 B、D 然后 DC,这将绘制从 A 到 D、B 到 D 和 D 到 C 的三条线?
    • 这就是我想做的。我不确定这是否可能,也许标签不是适合这个的工具..
    • 我可以决定我将绘制 A 并将其连接到 B,然后单击三下连接到 C,但是如果我想连接 D 和 A 或者有一个仅连接到另一个顶点的顶点怎么办而图表“继续”?
    • 在这种情况下我要做的是存储一个包含坐标对的元组列表。在一个单独的函数中,我将遍历列表中的每个坐标对并为每个坐标对画一条线。创建列表: List> pointPairs = new List>();将点添加到列表中: Point firstPoint = new Point(10, 20);点 secondPoint = new Point(30, 60); pointPairs.Add(new Tuple(firstPoint, secondPoint));
    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2014-02-21
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多