在某些情况下,从鼠标中读取更高精度的值可能会很有用,而不仅仅是当前屏幕分辨率上的离散像素坐标范围。显然,在GUI界面中没有必要这样做,但对于某些游戏来说,将其与屏幕分辨率关联起来甚至可能毫无意义。
为什么我们被迫将其视为像素坐标而不是原始模拟值?
在某些情况下,从鼠标中读取更高精度的值可能会很有用,而不仅仅是当前屏幕分辨率上的离散像素坐标范围。显然,在GUI界面中没有必要这样做,但对于某些游戏来说,将其与屏幕分辨率关联起来甚至可能毫无意义。
为什么我们被迫将其视为像素坐标而不是原始模拟值?
WM_INPUT
和WM_MOUSEMOVE
,以及DirectInput和XInput;默认情况下,它仅支持在完全基于整数的主Windows GUI中使用WM_MOUSEMOVE
,但是如果您同时实现WM_INPUT
和WM_MOUSEMOVE
,则可以使用亚像素精度移动鼠标光标。一些程序显然会从中受益,例如第一人称射击游戏、Web浏览器(缩放页面和滚动条)以及图像编辑程序(例如GIMP、Adobe Photoshop/Illustrator、Paint.NET等)。WM_INPUT
和WM_MOUSEMOVE
,并使Windows shell本地支持它,会使鼠标移动总体上看起来更加平滑;为了充分利用此功能,您可能需要修改Windows中鼠标指针的工作方式,以便实现ClearType字体渲染的变体,使用Signed Distance Fields和/或Scalable Vector Graphics来确定光标的边缘(这也可能允许其他视觉效果,如适当的运动模糊、照明等)。http://msdn.microsoft.com/en-us/library/windows/desktop/ms646259(v=vs.85).aspx
根据这里的一个答案,可以使用非标准缩放来在Mac上实现亚像素分辨率:
那个问题的两个答案都没有被接受,但进一步调查可能是值得的。
因为鼠标不提供模拟或浮点值。这已经是一个翻译了。
[编辑] 有人愿意对-1发表评论吗?