【问题标题】:Is it possible to obtain float touch coordinates in Windows?是否可以在 Windows 中获取浮动触摸坐标?
【发布时间】:2016-08-02 00:54:04
【问题描述】:

我正在做一个项目,我需要使用高精度输入坐标进行进一步计算。

我在 WM_TOUCH 消息处理程序中调用 GetTouchInputInfo 函数来获取 PTOUCHINPUT 变量,但此结构中提供的坐标以物理屏幕坐标的百分之一像素表示。所以基本上最后2位总是0,除以100后,这些坐标就是整数屏幕坐标。我不知道他们为什么做到了百分之一。

此外,触摸屏传感器是否提供连续信号而不是离散信号?据我所知,Window 中有一个叫做触摸预测的东西,它会产生一个小的触摸输入延迟,因为它拥有一些最新的输入点,并执行一些预测算法来修复这些新输入的平滑和漂亮。即使触摸屏只能感知离散信号,在预测算法之后输入也应该是浮动的吧?

我真的不知道如何获得浮动触摸输入。有什么方法或功能可以实现这一点吗?

谢谢!

对不起我的英语。

【问题讨论】:

标签: c++ windows winapi touch


【解决方案1】:

要将缩放的长坐标转换为浮点数:

PTOUCHINPUT pt;
float xf = pt->x / 100.0;
float yf = pt->y / 100.0;

【讨论】:

  • 考虑到“这个结构中的坐标只是除以 100 后的整数屏幕坐标”,这将创建除以 10.000 的整数坐标。我看不出这有什么帮助。
  • 坐标是精度为0.01像素的整数。这将为您提供一个以像素为单位的浮点数。
  • 要点是:(34600, 22300),全部以百分之一并以00结尾,我认为它们的精度不是0.01像素。@stark
  • 数字的精度是0.01像素,但是你的触摸传感器的精度只有1像素。鉴于手写笔或手指比像素大得多,这并不奇怪。
  • 这完全取决于制造商和驱动程序作者。由于触摸输入通常有一个接触区域(与鼠标的单点相比),坐标很可能是该区域的计算中心。如果驱动程序供应商想要使用它,精度就在那里。顺便提一句。您应该使用double 或浮点文字100.0f。正如所写的那样,该代码几乎对任何编译器都会产生警告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
相关资源
最近更新 更多