【问题标题】:Normalize and smooth the mouse movements?规范化和平滑鼠标移动?
【发布时间】:2011-11-01 13:01:24
【问题描述】:

有没有办法平滑鼠标移动?我想消除普通鼠标用手移动时的所有小抖动,就像你永远无法在油漆中画出干净的线条,因为你的手在做小的抖动动作。

这可能很难理解我的意思,但是如果你知道 zbrush 他们有一个叫做惰性鼠标的功能http://www.pixologic.com/docs/index.php/Lazy_Mouse我正在寻找一种在我的应用程序中重新创建它的方法。我可以使用Cursor.Position 读取鼠标位置,但我找不到在将这些数字发送到屏幕上的指针之前平均它们的方法。

【问题讨论】:

  • 这不是他们所做的......他们不会在“被发送到屏幕之前”更改数字......他们只是将它们解释为画笔所描绘的......究竟是什么你的目标?
  • 一行很简单,只记录第一个和最后一个点。对于更复杂的形状,您需要曲线拟合。数学会变得很复杂。
  • 我的目标是创建一个小应用程序来帮助我用鼠标绘图,就像我描述的那样,在移动鼠标时平均手画的小抖动。这就是我想知道的问题,我在哪里可以获取从鼠标发送的数字并在它们发送到屏幕之前对其进行操作。

标签: c# mouse


【解决方案1】:

这只有在您可以稍微延迟鼠标移动效果的情况下才有可能。您以特定频率记录鼠标移动的点,然后将它们平均成一条线。然后用那条线画出你需要的任何东西。您将无法直接将鼠标光标设置到平均位置,因为这会作为新的鼠标移动反馈到您的程序中。

确保构建它以便您可以调整延迟鼠标移动的时间、平均的激进程度(例如通过限制它包含的点数)以及记录鼠标移动的频率(这是如果太频繁可能会影响 cpu 的使用)。

您当然必须在应用程序中为鼠标创建某种抽象,并为应用程序创建一种获取它的方法。 (我会尽量保持它与正常的 winforms/wpf 尽可能相似,以便我可以恢复更改并在需要时直接使用鼠标移动)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多