【问题标题】:MouseMove event too slow for paintingMouseMove 事件太慢,无法绘画
【发布时间】:2010-09-29 01:54:47
【问题描述】:

我正在使用 C# WinForms 为我的 XNA 游戏创建关卡构建器。我有一个平铺网格,您可以使用铅笔工具进行绘制,就像在 MSPaint 中一样。问题是,当您快速(ish)拖动鼠标来绘制线条时,会跳过图块。

我尝试使用我在 Google 上看到的一种方法来生成线程来进行绘画,但这似乎没有帮助。

有什么想法吗?

【问题讨论】:

标签: c# .net winforms xna


【解决方案1】:

OTTOMH,您可以跟踪鼠标的最后一点,并且在 MouseMove 处理程序中,您可以假设线性运动并确定最后一点和当前点之间的所有图块。我的猜测是,您不太可能触发足够的 MouseMove 事件来处理用户快速移动鼠标的情况。

【讨论】:

  • 这是正确的。不能保证鼠标移动的每个像素都会发生 MouseMove。最好的做法是从最后一点到当前点画一条线,如果用户想要更多细节,他们可以画得更慢,这会迫使事件更靠近。
  • 当鼠标“快速”移动并不是因为事件发生得更快;这是因为鼠标每次移动更多的像素。请注意,光标本身并不是在途中的每个像素中绘制的。
【解决方案2】:

太棒了!完美运行。

我从这里使用了 DDA 线算法

http://www.cs.unc.edu/~mcmillan/comp136/Lecture6/Lines.html

画线。

谢谢!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2023-04-02
    • 2020-12-03
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多