如何在Windows中获得亚像素精度的触摸坐标?

时间:2016-08-03 03:26:34

标签: windows winapi touch touchscreen

我的目的是获得比像素坐标更高精度的触摸输入。

我使用GetTouchInputInfo函数在WM_TOUCH处理程序中获取触摸坐标。调用此函数后,我得到一个TOUCHINPUT结构变量,其中包含两个成员:x和y。这两个成员以物理屏幕坐标的百分之一像素表示。例如,如果我得到x = 11234,y = 42367,相应的物理屏幕坐标将是(112.34,423.67)

根据上面我可以得到精确到2位小数的坐标,这很棒。问题是我从TOUCHINPUT结构获得的值都是:x = 11200 y = 42300。所以我只能获得整数精度像素坐标(112,423)。

Windows提供了一个marco TOUCH_COORD_TO_PIXEL

#define TOUCH_COORD_TO_PIXEL(l)         ((l) / 100)

这只是从触摸输入坐标到整数像素坐标的简单转换。 有趣的部分在备注中:TOUCH_COORD_TO_PIXEL宏用于将触摸坐标(当前为厘像)转换为像素。触摸坐标比像素更细粒度,因此应用程序开发人员可以使用子像素粒度来处理专门的应用程序,如图形设计。

这意味着通常触摸坐标更准确。

之前我问question,我以为我当时只能获得整数触摸坐标。斯塔克说,由于我的触摸传感器精度,我得到了11200。我搜索了很多,我发现他们从触摸区域获取数据并使用子像素插值来确定峰值。因此,即使触摸不准确,峰值也应该是甩尾值。此外,我使用具有最新G5触摸控制器的Surface pro 4,我认为这应该是准确的,因为它是微软的代表产品。我还尝试了其他2个触摸显示器,同样的问题。

因此我认为由于使用了错误的参数,存在一些设置问题。如果这是准确的问题,你能解释一下为什么吗?

非常感谢!

0 个答案:

没有答案
相关问题