为什么不能将鼠标坐标作为浮点值获取?

时间:2012-06-24 17:21:24

标签: floating-point mouse

在我看来,在某些情况下,从鼠标中读取更高精度的值,而不仅仅是当前屏幕分辨率上的一系列离散像素坐标,这可能很有用。显然,在GUI中没有必要这样做,但对于某些游戏,将它与屏幕分辨率完全联系起来甚至没有任何意义。

为什么我们被迫将其作为像素坐标而不是原始模拟值读取?

4 个答案:

答案 0 :(得分:3)

至少在Windows下,对于支持高分辨率报告的设备,您可以检索从0到0xffff的更高分辨率坐标,而不是转换为屏幕坐标的鼠标位置

  

检索高分辨率点。积分范围从零到65,535   x坐标和y坐标均为(0xFFFF)。这是提供的决议   通过绝对坐标指向设备,如绘图平板电脑。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646259(v=vs.85).aspx

根据这里的一个答案,可以使用非标准缩放在Mac上实现亚像素分辨率:

High resolution and high framerate mouse coordinates on OSX? (Or other solution?)

这个问题的答案都没有被接受,但值得进一步调查。

答案 1 :(得分:2)

Windows使用WM_INPUTWM_MOUSEMOVE,以及DirectInput和XInput;

默认情况下,它仅支持主Windows GUI的WM_MOUSEMOVE,它完全基于整数,但如果您要同时实施WM_INPUTWM_MOUSEMOVE,则可以移动具有子像素精度的鼠标光标。

有些程序显然会占据很多优势,例如第一人称射击游戏,网页浏览器(缩放页面和滚动条)以及图像编辑程序(如GIMP,Adobe Photoshop / Illustrator,Paint.NET等) ...)

另外,让鼠标同时发送WM_INPUTWM_MOUSEMOVE,并让Windows shell本身支持它,这样可以使鼠标移动显得更加平滑;为了充分利用这一点,您可能希望修改鼠标光标在Windows中的工作方式,以便可以使用签名距离字段和/或可缩放矢量图形来实现ClearType字体渲染的变体来确定光标的边缘(这也可能允许其他视觉效果。

编辑:我发现,差不多两年后,有人在我生日那天更新了帖子的格式。太棒了,谢谢老兄。

答案 2 :(得分:1)

这取决于所使用的语言和环境 例如,在Pharo或Squeak smalltalk下运行的Morphic GUI使用浮点数作为其坐标

此处列在accepted answer此处。

Morphic在self

中被执行

答案 3 :(得分:-5)

因为鼠标不提供模拟或浮点值。那已经是翻译了。

[编辑]有人关心评论-1吗?