Kostick |
Отправлено: 28 Октября, 2022 - 12:39:54
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Добрый день.
Подскажите, есть два монитора: с разрешением 1920х1080 и 2560х1440. Есть программа, которая распознаёт изображение в нижней правой четверти экрана. Например, для экрана 1920х1080 - это область от 1440х810 до 1920х1080, а для 2560х1440 - это от 1920х1080 до 2560х1440.
Как можно оптимизировать код, чтобы при получении программой информации о разрешении экрана, например с помощью команд getmouse и getwindow, область поиска была для разных разрешений экрана соответствующая?
И можно ли как-то визуализировать эту область поиска, например, с помощью выделения рамкой? |
|
|
Zireael |
Отправлено: 28 Октября, 2022 - 13:32:23
|
Эксперт
Покинул форум
Сообщений всего: 4468
Дата рег-ции: Нояб. 2017
Репутация: 585
|
При разных разрешениях изображение будет отличаться и не найдётся.
От идеи использования скрипта на разных разрешениях лучше сразу отказаться. Запускать игру в оконном режиме и делать скрипт под определённое разрешение.
Цитата: можно ли как-то визуализировать эту область поиска, например, с помощью выделения рамкой?
CODE:int array[1920][1080];
initialarray(#array[0][0], 255);
visual(200, 100, 700, 500, 3); // координаты рамки и толщина линии
loop()sleep(10);
function visual(int sx, int sy, int ex, int ey, int width)
{
visualwindow(0, 0, 0, ex-sx, width, sx, sy, 100, #array[0][0]);
visualwindow(1, 0, 0, width, ey-sy, sx, sy, 100, #array[0][0]);
visualwindow(2, 0, 0, ex-sx+width, width, sx, ey, 100, #array[0][0]);
visualwindow(3, 0, 0, width, ey-sy, ex, sy, 100, #array[0][0]);
} |
|
|
Kostick |
Отправлено: 28 Октября, 2022 - 15:50:45
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Zireael пишет:
CODE:int array[1920][1080];
initialarray(#array[0][0], 255);
visual(200, 100, 700, 500, 3); // координаты рамки и толщина линии
loop()sleep(10);
function visual(int sx, int sy, int ex, int ey, int width)
{
visualwindow(0, 0, 0, ex-sx, width, sx, sy, 100, #array[0][0]);
visualwindow(1, 0, 0, width, ey-sy, sx, sy, 100, #array[0][0]);
visualwindow(2, 0, 0, ex-sx+width, width, sx, ey, 100, #array[0][0]);
visualwindow(3, 0, 0, width, ey-sy, ex, sy, 100, #array[0][0]);
}
В вашем коде рамка будет красной, а как поменять цвет рамки, например, на зеленый? Понимаю, что это надо делать в функции initialarray, а как, не могу понять.(Отредактировано автором: 28 Октября, 2022 - 15:51:21) |
|
|
Zireael |
Отправлено: 29 Октября, 2022 - 01:47:26
|
Эксперт
Покинул форум
Сообщений всего: 4468
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: а как поменять цвет рамки, например, на зеленый?
CODE:initialarray(#array[0][0], rgb(0, 255, 0)); |
|
|
Kostick |
Отправлено: 29 Октября, 2022 - 17:11:05
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Zireael пишет: Цитата: а как поменять цвет рамки, например, на зеленый?
CODE:initialarray(#array[0][0], rgb(0, 255, 0));
Спасибо большое! Не знал, что эту функцию можно и тут использовать |
|
|
|