在我看来,在某些情况下,从鼠标中读取更高精度的值,而不仅仅是当前屏幕分辨率上的一系列离散像素坐标,这可能很有用。显然,在GUI中没有必要这样做,但对于某些游戏,将它与屏幕分辨率完全联系起来甚至没有任何意义。
为什么我们被迫将其作为像素坐标而不是原始模拟值读取?
答案 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_INPUT
和WM_MOUSEMOVE
,以及DirectInput和XInput;
默认情况下,它仅支持主Windows GUI的WM_MOUSEMOVE
,它完全基于整数,但如果您要同时实施WM_INPUT
和WM_MOUSEMOVE
,则可以移动具有子像素精度的鼠标光标。
有些程序显然会占据很多优势,例如第一人称射击游戏,网页浏览器(缩放页面和滚动条)以及图像编辑程序(如GIMP,Adobe Photoshop / Illustrator,Paint.NET等) ...)
另外,让鼠标同时发送WM_INPUT
和WM_MOUSEMOVE
,并让Windows shell本身支持它,这样可以使鼠标移动显得更加平滑;为了充分利用这一点,您可能希望修改鼠标光标在Windows中的工作方式,以便可以使用签名距离字段和/或可缩放矢量图形来实现ClearType字体渲染的变体来确定光标的边缘(这也可能允许其他视觉效果。
编辑:我发现,差不多两年后,有人在我生日那天更新了帖子的格式。太棒了,谢谢老兄。
答案 2 :(得分:1)
这取决于所使用的语言和环境 例如,在Pharo或Squeak smalltalk下运行的Morphic GUI使用浮点数作为其坐标
此处列在accepted answer此处。
Morphic在self
中被执行答案 3 :(得分:-5)
因为鼠标不提供模拟或浮点值。那已经是翻译了。
[编辑]有人关心评论-1吗?