9

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

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

4

4 回答 4

4

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

检索高分辨率点。在 x 和 y 坐标中,点的范围可以从 0 到 65,535 (0xFFFF)。这是由绝对坐标定位设备(如绘图板)提供的分辨率。

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

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

OSX上的高分辨率和高帧率鼠标坐标?(或其他解决方案?)

该问题的答案均​​未被接受,但可能值得进一步调查。

于 2012-06-24T17:23:36.883 回答
3

Windows 使用WM_INPUTand WM_MOUSEMOVE,以及 DirectInput 和 XInput;

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

一些程序显然会充分利用这一点,例如第一人称射击游戏、网络浏览器(缩放页面和滚动条)和图像编辑程序(例如 GIMP、Adobe Photoshop/Illustrator、Paint.NET 等... )

另外,让鼠标同时发送WM_INPUTWM_MOUSEMOVE,并让 Windows shell 本身支持它,通常会使鼠标移动看起来更流畅;为了充分利用这一点,您可能需要修改鼠标光标在 Windows 中的工作方式,以便可以实现 ClearType 字体渲染的变体,使用有符号距离场和/或可缩放矢量图形来确定光标的边缘(这也可以允许其他视觉效果,例如适当的运动模糊、照明等)。


编辑:在事实发生近两年后,我才发现有人在我生日那天更新了我帖子的格式。厉害了,谢谢大佬

于 2016-04-02T23:23:02.603 回答
1

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

这在此处接受的答案中列出。

Morphic 最初是在self中实现的

于 2012-06-24T17:40:07.117 回答
-5

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

[编辑] 有人愿意评论 -1 吗?

于 2012-06-25T12:32:30.327 回答