如何将NSTouch坐标转换为屏幕坐标?

时间:2018-03-21 13:14:20

标签: macos cocoa nstouch

在macOS上的Cocoa中,NSTouch对象包含标准化坐标系中触摸的坐标(x,y在0.0和1.0之间的范围内)。它还具有触摸板设备的大小。

因此,对于NSTouch对象,您必须触摸触摸板设备上的触摸坐标。这当然很有意义。

我现在要做的是将这些坐标映射到屏幕坐标。 (我知道这个定义不明确,所以请继续阅读以进一步解释我的意思。)

对于单点触控,此转换已由Cocoa / macOS处理:我得到一个NSEvent对象(type=Gesture),此NSEvent具有鼠标指针的位置(并且NSTouch的单个NSEvent具有触摸板设备坐标。)

但这对多点触控手势不起作用,因为NSEvent只有一个位置,而对于多点触控手势,鼠标指针的位置停留在多点触控手势开始的位置。

这一切都非常有意义。但是现在我想要以某种方式对单触式情况进行相同的转换(对于多点触控手势中的每个触摸)。我相信系统首选项中的触控板速度设置会影响这种映射。

如果您想了解一个用例,可以考虑一个允许多行(多点触摸)绘图的绘图应用程序,这些多线绘图应该以与鼠标指针相同的速度发生。

我发现NSTouch有一个locationInView函数,但这一直是我的断言。根据{{​​3}}预期的结果(此功能仅适用于来自触摸栏的触摸事件,但不适用于触控板)。

我找不到其他看起来很有希望的方法。

0 个答案:

没有答案