Как я могу преобразовать координаты NSTouch в координаты экрана?

В какао на macOS NSTouch Объект содержит координаты касания в нормализованной системе координат (с x, y в диапазоне от 0,0 до 1,0). И у этого также есть размер устройства тачпада.

Так что для NSTouch Объект вы должны координаты касания на устройстве сенсорной панели. Это, конечно, имеет большой смысл.

То, что я сейчас пытаюсь сделать, это сопоставить эти координаты с координатами экрана. (Я знаю, что это не очень четко определено, поэтому, пожалуйста, прочтите дальнейшее объяснение того, что я имею в виду.)

Для одного касания это преобразование уже обрабатывается Cocoa/macOS: я получаю NSEvent объект (type=Gesture) и это NSEvent имеет расположение указателя мыши (и NSTouch из NSEvent имеет координаты тачпада-устройства).

Но это не работает для мультитач жеста, так как NSEvent имеет только одно местоположение, а для жестов мультитач положение указателя мыши остается на том месте, где начался жест мультитача.

Это имеет все очень много смысла. Но теперь я хочу как-то сделать то же преобразование, что и для случая с одним касанием (для каждого касания в жесте с несколькими касаниями). Я считаю, что настройки скорости трекпада в системных настройках будут влиять на такое отображение.

Если вас интересует сценарий использования, подумайте о приложении для рисования, которое позволяло бы создавать многострочные (multi-touch) рисунки, и эти многострочные рисунки должны выполняться с той же скоростью, что и указатель мыши.

я нашел это NSTouch имеет locationInView функция, но это утверждает для меня все время. Этого следует ожидать в соответствии с /questions/7438389/ne-udaetsya-poluchit-locationinview-dlya-etogo-tipa-oshibki-podtverzhdeniya-nstouch-pri-popyitke-poluchit-mestopolozhenie/7438401#7438401 (эта функция работает только для сенсорных событий, поступающих с сенсорной панели, но не с трекпада).

Я не мог найти другие методы, которые выглядят многообещающими.

0 ответов

Другие вопросы по тегам