Author Topic: переопределение координат под разные разрешения экрана  (Read 6611 times)

0 Members and 1 Guest are viewing this topic.

SunnyDay

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Писал скрипт под разрешение экрана 1280х1024, возникла потребность использовать его на других машинах с другими разрешениями другими пользователями, соответсвено точки координат должны будут изменится под разрешения типа 1960х1024.
К примеру точка (х,y) 500,600 на 1280х1024 экране  какие будет иметь координаты на, скажем 1960х1024. ?
Существует ли способ пересчитать координаты под разные разрешения? Множетели, коэфициенты или программа которая позволяет это сделать ? Или какой нибудь другой способ?

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
если привязки к окну нет то координаты берутся от угла монитора, соответственно играет роль где размещено окно, если привязка к окну есть или в фулскрине то там все зависит как растягивается картинка, тут врятли получится просто адаптировать координаты, надо будет подбирать по новой.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Всё зависит от приложения. Чаще всего дурная затея.
На примере браузера: страницы часто "тянутся", строки таблицы, кнопки - перескакивают.

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

Так что ВСЕГДА рекомендую писать не под конкретное разрешение. Естественно там, где это имеет смысл.

Ну если у тебя очень жёсткое приложение тогда можно попробовать
точка (х,y) 500,600 на 1280х1024 -- 1960х1024.
x = INT(х*1960/1280)
« Last Edit: February 28, 2014, 12:18:09 PM by Vint »


SunnyDay

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Все верно,  нет жесткой привязки к точкам - обозначенны только зоны с большим запасам поиска пикселей, нажатий и проч. Формулу перерасчета я себе так и представлял по сути это просто множитель коми нужно перемножать все координаты х , y  соответственно , я же представлял себе более автоматезированный процесс, но уже понимаю что такого нету.
Остается один вопрос - как будет работать поиск картинок (If_picture_in..) заскриненых и нарезанных  на 1280 ?
Скорее всего на 1960 в сделаном скриншоте они растянутся и будут отличатся от сделанных на 1280 - как тут быть с совпадениеми картинки и скриншота? Переделывать или пронесет?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
А при чём здесь картинки? У тебя фотка или буква на экране 5х4 (1280х1024) не тянется же на 16х9 (1920х1080). Потому как она была 8х6 пикселов так и осталась.


SunnyDay

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Ну да , логично , хоть это не нужно переделывать , спасибо.

alwhite

  • Зашел в гости
  • *
  • Posts: 8
    • View Profile
И все же, как сделать резиновые координаты???
Пример. Окно- задаю координаты в нем, уменьшил окно  сменились координаты по окну. (и да кликер привязан к этому окну)

Code: (clickermann) [Select]
//снимаю данные по браузеру хотелось бы узнавать данные без обозначения самого окна
WNDGETINFO(WNDFIND("Google Chrome", 0), $x, $y, $size_x, $size_y)
LOGWRITE ("Окно в координатах: ", $x, ",", $y)
LOGWRITE ("Размер окна: ", $size_x, ",", $size_y)
//получаем в лог
//15:25:43 Окно в координатах: -8,-8
//15:25:43 Размер окна: 1696,1026

// далее задаю координаты и пишу формулу изменения координат в зависимости от изменения окна.
waitms(1900)
LCLICK(115*$size_x/1696,136*$size_y/1026)
waitms(1900)
LCLICK(1574*$size_x/1696,87*$size_y/1026)
waitms(1900)
HALT


я запутался короче