os :: windows xp sp3 Qt :: 4.6
我正在玩一些3D东西,需要实现鼠标移动。我尝试使用Qt mouseMoveEvent,但发现这并不好,因为鼠标移动时mouseMoveEvent不处理每个像素。我需要一些注册每个运动像素的东西。 正在寻找解决方案我在Qt在线文档&&找到QCursor class&&其成员pos()。
问题:: QCursor :: pos()是否记录了运动中的每个像素? 让人更好地了解3d中相机的精确处理(我不是在使用openGL,在画家中构建我的引擎(这是为了娱乐和娱乐)?
答案 0 :(得分:2)
不,鼠标可以一次移动几个像素。 如果你需要某些东西的中间点,那么计算它们。计算鼠标两个位置之间的所有线上点。我仍然不清楚为什么你需要积分,但这应该有所帮助。
答案 1 :(得分:2)
这很可能与Qt无关,但与您的鼠标轮询率有关。您可能想在Coding Horror上参考这篇内容丰富的博文。
答案 2 :(得分:2)
前段时间我有类似的问题(我没有使用过QT)。您的系统没有那些准确的信息。
我做的是计算鼠标位置变化(dx,dy)并使用该信息移动相机。在许多框架中,当您通过事件获取该信息(例如SDL)时,您不必计算(dx,dy)。
或者,您可以计算位置变化,然后在当前和之前的鼠标位置之间插入位置 - 然后您可以使用这些位置移动相机。
如果您想在屏幕上绘制鼠标移动,则会遇到同样的问题。然后,您可以使用Bresenham的算法http://en.wikipedia.org/wiki/Bresenham's_line_algorithm生成两个给定点之间的像素
答案 3 :(得分:0)
不,QCursor不会提供这些信息,因为它没有信号给你这个。您必须显式查询其位置,并在mouseMoveEvent中再次限制精度。底层窗口系统无法提供这种精度。就像其他人所说的那样,只需要随意进行大范围的动作或自己计算中间点。