【问题标题】:mouse followed drawing in C#鼠标跟随在 C# 中的绘图
【发布时间】:2009-06-10 13:56:47
【问题描述】:

我想用 C# 制作一个共享绘图板。这意味着通过 TCP 连接连接的两个人可以在此板上绘图。这个想法(目前)是人们可以点击屏幕并绘图。您认为最好的方法是什么?
当用户点击某个点时,画一个点很容易,但是当用户拖动鼠标时,它会变得有点复杂,你需要在最后一个点和当前点之间画一条线。这也不是很好,所以我画了一个点,线条开始有点改善,但不是那么好。

最后,我还需要通过 TCP 发送它,所以我需要区分两者。我希望我可以发送积分并让它在另一边绘制它,但它似乎不起作用。除了发送类型之外的任何想法?

drawing http://img193.imageshack.us/img193/9697/drawingw.png

编辑:
好的,我将使用具有 Dispatch(myForm) 的 IDrawingArgument 接口,并且基本上执行双重调度,因此它解决了 TCP 问题(将对其进行序列化/反序列化)。
线路还是有点笨重。

【问题讨论】:

    标签: c# .net networking drawing


    【解决方案1】:

    关于鼠标移动事件的一点提示。保留一个不会再次触发事件的标志,直到设置标志的最后一个事件将其关闭。即:

    bool isDrawing = false;
    public void myCanvas_MouseMove(object sender, EventArgs e)
    {
         if(!isDrawing)
         {
             isDrawing = true;
             // Do drawing here
             isDrawing = false;
         }
    }
    

    这对我在 mousemove 事件中绘图时帮助很大。

    【讨论】:

    • 我认为这可能会做到。我猜它基本上是一把锁?
    • 试过了,没多大区别。
    • 下一次我添加的是一个延迟......不让绘图事件触发,除非它自上次触发以来至少 5 毫秒.. 或 3 毫秒.. 取决于您的绘图方法。这会使绘图变得平滑。
    • ^我所做的下一个“事情”是延迟......^
    【解决方案2】:

    点: (x,y),(x2,y2),(x3,y3)

    行: (x,y,x2,y2),(x3,y3,x4,y4)

    因此,格式是元组列表。大小为 4 的元组是线,大小为 2 的元组是点。请注意,如果您的系统变得更加复杂,那么您真的会后悔不这样做:

    点: D(x,y),D(x2,y2),D(x3,y3)

    行: L(x,y,x2,y2),L(x3,y3,x4,y4)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      相关资源
      最近更新 更多