在winform中拖动动态线

时间:2012-05-31 07:10:27

标签: c# winforms

我只想知道如何在c#中拖放一条在运行时动态创建的行(鼠标绘制线)。动态线放在面板上。

1 个答案:

答案 0 :(得分:1)

我过去曾用过两种方式:

  1. On MouseDown calculate the distance between the line and the mouse cursor。如果它在几个像素内开始拖动。当MouseButton向下响应MouseMove时,通过在同一向量上转换线的起点和终点(当前鼠标位置 - 开始拖动鼠标位置)

  2. 在MouseDown上测试鼠标光标下像素的颜色,看它是否在线上。如果是,请执行与上述相同的拖动。

  3. 棘手的是,当有多条线路靠近并且您需要找出需要拖动的线路时,选项1很难

    当线条非常薄时,选项2很难。

    另一种方法是在绘制线条时在不可见的位图上绘制较粗的线条并测试不可见位图上的像素。这样你可以提供更多的容差,你可以给每条不可见的线条提供一个独特的颜色,这样就可以更容易地识别出被点击的线条。

    这有意义吗?