Как узнать координаты пикселя на экране
Перейти к содержимому

Как узнать координаты пикселя на экране

  • автор:

Определение координат нажатия на экране, при нажатии на кнопку

Беру координаты нажатия на экран из функции InputTouch в BP Player. При нажатии на экран в произвольном месте, получаю нормальные координаты.

Однако, если нажимаю на кнопку, получаю нулевые координаты. Что и понятно, т.к. кнопка идет поверх всех.

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

Т.е. если у меня кнопка 64х64 пикселя, верхний левый имеет координаты 0х0, то мне нужно получить координаты нажатия на поверхности кнопки. Допустим в моем случае центр кнопки условно будет равен х=32 у=32.

#1
11:31, 2 окт 2020

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

Получаю размеры экрана

1 | Определение координат нажатия на экране, при нажатии на кнопку

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

Получаю рандомно 2D вектор для точки показа картинки.

2 | Определение координат нажатия на экране, при нажатии на кнопку

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

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

А вот что я получаю в итоге:

3 | Определение координат нажатия на экране, при нажатии на кнопку

Первая строчка 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

Mouse Input | Определение координат нажатия на экране, при нажатии на кнопку

Может надо через мышь?

#11
17:37, 2 окт 2020

У меня мобильное. Так что через тап по экрану только

  • Mephistopheles
  • Постоялец

#12
1:53, 3 окт 2020

defond
> Ребят, пожалуйста, хоть какая то помощь нужна — это критичное место в проекте.
А что ты вообще хочешь сделать? Весь кейс расскажи, что, зачем, куда

#13
10:41, 3 окт 2020

Mephistopheles
> А что ты вообще хочешь сделать? Весь кейс расскажи, что, зачем, куда

На экран пользователя, в определенной зоне (правая часть экрана) в рандомном месте должно появляться изображение перекрестия.

1 | Определение координат нажатия на экране, при нажатии на кнопку

Игрок должен на нее нажать. При этом нужно определить, насколько близко к центру произошло нажатие.

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

  • 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 бронзовых знаков

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *