Определение координат нажатия на экране, при нажатии на кнопку
Беру координаты нажатия на экран из функции InputTouch в BP Player. При нажатии на экран в произвольном месте, получаю нормальные координаты.
Однако, если нажимаю на кнопку, получаю нулевые координаты. Что и понятно, т.к. кнопка идет поверх всех.
Мануалы перечитал, не нашел решения по которому можно было бы получить координаты. Причем мне нужны даже не столько координаты всего экрана, а координаты относительно кнопки.
Т.е. если у меня кнопка 64х64 пикселя, верхний левый имеет координаты 0х0, то мне нужно получить координаты нажатия на поверхности кнопки. Допустим в моем случае центр кнопки условно будет равен х=32 у=32.
#1
11:31, 2 окт 2020
Решил сделать кастомную кнопку. Не получается собрать воедино координаты, поэтому прошу помощи в отслеживании логики.
Получаю размеры экрана

Вычисляю область для показа кнопки.
Беру размер экрана из переменной, раскладываю на float. Х делю на 2 т.к. показывать буду в правой части экрана. Так же отступаю справа от max X 20 пикселей в виде бортика и размер картинки, которая будет показываться.
С У поступаю следующим образом — сверху отступаю бортик. Снизу отступаю бортик+размер картинки.
Получаю рандомно 2D вектор для точки показа картинки.

Вывожу на экран отладочную информацию в виде: координаты касания экрана (Location из InputTouch) * Координаты точки показа картинки.
Если всё сделано верно, то при нажатии на картинку, координаты касания должны быть немного больше координат показа картинки.
А вот что я получаю в итоге:

Первая строчка TO
х = 709.000 y=400 z=1.0 — координаты касания, полученные из InputTouch (Location). Касаюсь точно в середине картинки.
X=1280 Y=720 — размер экрана из переменной, на основе которой делаются вычисления поля показа картинки, а так же точка показа картинки. Картинка имеет размеры 100х100.
Х=1006,342 У=553,756 — координаты из переменной, по которой происходит показ картинки.
Вторая строчка SetShot Х=1006,342 У=553,756 — координаты из переменной по которой показывается картинка, из функции показа картинки (для перепроверки).
Как итог — у меня что-то не правильно происходит. Что именно — я не понимаю. Логика и её исполнения верные, на мой взгляд. Почему не совпадают и так разняться данные — для меня вообще непонятно.
#2
12:47, 2 окт 2020
Ребят, пожалуйста, хоть какая то помощь нужна — это критичное место в проекте.
#3
14:33, 2 окт 2020
Может, начать с простого?
Вывести картинку 100х100 в координатах (0,0). Визуально убедиться, что она выводится там, где ожидается. Потыкать по ней посередине и по углам, посмотреть координаты касания. Потыкать по картинке и рядом с ней на одной высоте, посмотреть, как ведет себя Y. Аналогично с Х.
Возможно, на основании полученных данных можно будет сделать какие-то выводы.
#4
14:36, 2 окт 2020
Ptica
> Может, начать с простого?
Так пробовал. В нулевых выводится норм. Я уже ХЗ, что делать. Причем нет какой то логичной взаимосвязи в отличии координат.
#5
14:49, 2 окт 2020
Дали совет сделать отдельный виджет, и в нем отлавливать касания. Только проблема в том, что Event можно повесить только на кнопку. А если есть кнопка — координаты касания не отловить. Замкнутый круг какой то
#6
15:18, 2 окт 2020
А в противоположном углу — (1180,620) ? Тоже нормально?
#7
15:26, 2 окт 2020
Да, к сожалению. Нихера уже не понимаю
#8
17:00, 2 окт 2020
Есть viewport, по-моему именно он хранит все виджеты и может сказать какой из них включён (отображается на экране) значит можно всегда получить этот виджет и обратиться к нему, и из него обратиться к любому другому классу или вернуть какие то данные.
#9
17:17, 2 окт 2020
Salamandr
> из него обратиться к любому другому классу или вернуть какие то данные.
Ну вот я получаю размер экрана. Данные выходят правильные.
Определяю точку показа картинки тоже правильно. Картинка сравнится в нужной части экрана.
А вот какого хрена InputTouch выдает такие координаты — я не знаю
#10
17:23, 2 окт 2020

Может надо через мышь?
#11
17:37, 2 окт 2020
У меня мобильное. Так что через тап по экрану только
- Mephistopheles
- Постоялец
#12
1:53, 3 окт 2020
defond
> Ребят, пожалуйста, хоть какая то помощь нужна — это критичное место в проекте.
А что ты вообще хочешь сделать? Весь кейс расскажи, что, зачем, куда
#13
10:41, 3 окт 2020
Mephistopheles
> А что ты вообще хочешь сделать? Весь кейс расскажи, что, зачем, куда
На экран пользователя, в определенной зоне (правая часть экрана) в рандомном месте должно появляться изображение перекрестия.

Игрок должен на нее нажать. При этом нужно определить, насколько близко к центру произошло нажатие.
Ну и соответственно, если игрок нажал на картинку — производятся вычисления и картинка показывается в новом месте. Насколько близко было нажатие к центру — определяет точность попадания.
- Mephistopheles
- Постоялец
#14
12:59, 3 окт 2020
думаю ты разберешься что с этим делать:)
AHK: Найти все координаты пикселей определенного цвета
Здравствуйте.
Мне нужно найти все координаты пикселей определенного цвета. Например черного. Это нужно для того, чтобы перенести рисунок на холст, с помощью скрипта.
Использовал PixelSearch, он находит первую координату и все. Делал через loop, он все равно находит одну координату и останавливается.
Думаю что для моей задачи лучше будет использовать PixelGetColor. Как сохранить, полученные данные в массив?
С помощью PixelGetColor думаю можно просто проверить все пиксели на экране. И потом занести их в массив. Не совсем понял как это сделать.
2 Ответ от stealzy 2018-02-14 14:10:19
- stealzy
- Разработчик
- Неактивен










Re: AHK: Найти все координаты пикселей определенного цвета
PixA := GetPixArr(100,100,5,5) MsgBox % PixA[3,4] GetPixArr(x, y, w, h) < PixArr := [] Loop % w < Index := A_Index Loop % h < PixelGetColor colorRGB, x+Index, y+A_Index PixArr[Index, A_Index] := colorRGB >> Return PixArr >
Подскажите веб сервис для определения координаты точки на изображении при наведении мыши?
Подскажите веб сервис, где загрузив картинку можно навести на любую ее часть мышку и увидеть координаты это точки относительно картинки (x и y). Понятно что нужна очень простая вещь и написать ее на PHP+JS можно и самому, но наверняка уже есть готовое? Нужно именно веб решение, чтобы пользователи любой ОС могли им воспользоваться.
- Вопрос задан более трёх лет назад
- 38356 просмотров
Как узнать координаты точки на экране pyautogui
Допустим мне нужно кликнуть на некоторую точку на экране, как узнать её координаты для её добавления в python (pyautogui) ?
Отслеживать
задан 10 янв 2018 в 10:00
23 1 1 серебряный знак 4 4 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Модуль win32api устанавливается при помощи pip install pypiwin32
import win32api print (win32api.GetCursorPos())
Отслеживать
ответ дан 10 янв 2018 в 10:51
Shihkauskas Shihkauskas
104 7 7 бронзовых знаков