Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Получение нужных координат на скриншоте

Страниц (3): [1] 2 3 »
 

1. Budni - 01 Июня, 2019 - 22:55:37 - перейти к сообщению
Помогите сделать. Нужно сделать скриншот на котором я по нажатии кнопки Ё мог сделать клик по 8 координатам на скриншоте,
чтобы они записались в переменные int x[8], y[8] и сохранились в блокноте для дальнейшего использования. Помогите пожалуйста.
2. Zireael - 02 Июня, 2019 - 02:29:40 - перейти к сообщению
Помочь - это подсказать как сделать или указать на ошибки в скрипте, всё остальное это - напишите за меня скрипт.
Тут простые действия, все нужные функции в киборе есть. Нужно лишь использовать их в нужном порядке.
3. Budni - 02 Июня, 2019 - 04:30:45 - перейти к сообщению
Подскажите пожалуйста как сделать, пока тока так получается, как быть со скриншотами?
CODE:

int x[4], y[4];
getdisplay(color, X_displey, Y_displey);// Для начала я думаю нужно получить размер экрана
int a[X_displey][Y_displey];//Выделяем память, но не уверен что правильно значение добавил
int ekran screen (#a[0][0], 0, 0, X_displey, Y_displey, -1);// а сюда верно записал?

open (ekran)//Тут нужно как то открыть скриншот на весь экран вообще не представляю как это сделать, хочу как в инструменте быстрого создания схем
textbkcolor(255, 16637860);
textout(0, 500, 500, "Получить x[0],y[0]", 1);
while(getkeystate(192)==0)sleep(10);// Ждем когда будет нажата Ё, чтобы получить координаты
getmouse(x[0], y[0]); // получаем координаты курсора
resettextout(1); // сбрасываем текст

// Получаем значения других координат
textout(0, 500, 500, "Получить x[1],y[1]", 1);
while(getkeystate(192)==0)sleep(10);
getmouse(x[1], y[1]);
resettextout(1);

textout(0, 500, 500, "Получить x[2],y[2]", 1);
while(getkeystate(192)==0)sleep(10);
getmouse(x[2], y[2]);
resettextout(1);

textout(0, 500, 500, "Получить x[3],y[3]", 1);
while(getkeystate(192)==0)sleep(10);
getmouse(x[3], y[3]);
resettextout(1);
///////////////////////////////////////

//Далее надо как то занести полученные данные в блокнот, тут я вообще не понимаю
fopen ("c:\koordinaty.txt", "a");
fwrite(x[0],x[1],x[2],x[3],y[0],y[1],y[2],y[3],); // Так??
fclose();
4. Zireael - 02 Июня, 2019 - 05:06:11 - перейти к сообщению
 Цитата:
open (ekran)//Тут нужно как то открыть скриншот

CODE:
int Image_0[1920][1080];
loadimage (#Image_0[0][0], "C:\image.bmp"); // загрузить картинку
visualwindow(0, 0, 0, imagewidth(#Image_0[0][0]), imageheight(#Image_0[0][0]), 0, 0, 100, #Image_0[0][0]); // вывести
loop()sleep(10);
5. Budni - 02 Июня, 2019 - 05:16:58 - перейти к сообщению
 Zireael пишет:
 Цитата:
open (ekran)//Тут нужно как то открыть скриншот

CODE:
int Image_0[1920][1080];
loadimage (#Image_0[0][0], "C:\image.bmp"); // загрузить картинку
visualwindow(0, 0, 0, imagewidth(#Image_0[0][0]), imageheight(#Image_0[0][0]), 0, 0, 100, #Image_0[0][0]); // вывести
loop()sleep(10);

А можно как то не сохраняя скриншот на диск а брать его из переменной и открывать?
6. Zireael - 02 Июня, 2019 - 05:20:04 - перейти к сообщению
 Цитата:
А можно как то не сохраняя скриншот на диск а брать его из переменной и открывать?

 Цитата:
visualwindow- Выводит часть изображения выбранного окна, файла или экрана поверх всех окон или на диалоговое окно

(Добавление)
CODE:
int count=3; // сколько координат нужно получить
win w=window (-1, "Edit", window (-1, "Notepad", -1)); // указатель на окно (блокнот в данном случае)

if(w) // если окно найдено
{
new int x[count]; // массив для координат X
new int y[count]; // массив для координат Y
new int scr[w.width+1][w.height+1]; // или клиентские координаты w.widthclient w.heightclient если указатель на главное окно

screen (#scr[0][0], 0, 0, w.width, w.height, w); // сделать скрин
visualwindow(0, 0, 0, sizearray(scr), sizearray(scr[]), 0, 0, 100, #scr[0][0]); // вывести

textbkcolor(255, 16637860);
for(int i=0; i<count; i++)
{
textout(0, 500, 500, "Получить x["+format(i)+"], y["+format(i)+"]", 0);
while(getkeystate(192)==0)sleep(10);// Ждем когда будет нажата Ё, чтобы получить координаты
while(getkeystate(192))sleep(10); // ждать когда будет отпущена Ё
getmouse(x[i], y[i]); // получаем координаты курсора
}

resettextout(1);

if(fopen ("C:\koordinaty.txt", "w")) // открыть файл для записи
{
for(i=0; i<count; i++) // для всех координат
{
fwrite(format(x[i])+", "+format(y[i])); // записывать координаты X и Y
fwrite(ENDL); // перенос строки
}
fclose();
start("C:\koordinaty.txt");
}
}
else messagebox("Окно не найдено");
7. Budni - 02 Июня, 2019 - 05:53:30 - перейти к сообщению
Zireael , Спасибо огромное, а можно как то увеличивать, уменьшать скриншот?
8. Zireael - 02 Июня, 2019 - 05:59:04 - перейти к сообщению
 Цитата:
а можно как то увеличивать, уменьшать скриншот?

 Цитата:
visualwindow(0, 200, 250, 300, 320, 10, 10 , 100, #Image_0[0][0]);
параметры:
1 - порядковый номер вывода изображения. от 0 до 1000.
2-5 - рамка захвата (клиентские координаты по указателю w)
6-7 - позиция вывода на экран изображения (экранные координаты)
8 - масштаб вывода
9 - указатель на окно или двухмерный массив int в котором хранится изображение или -1 если получаем снимок экрана
9. Budni - 02 Июня, 2019 - 06:02:52 - перейти к сообщению
 Zireael пишет:
 Цитата:
а можно как то увеличивать, уменьшать скриншот?

 Цитата:
visualwindow(0, 200, 250, 300, 320, 10, 10 , 100, #Image_0[0][0]);
параметры:
1 - порядковый номер вывода изображения. от 0 до 1000.
2-5 - рамка захвата (клиентские координаты по указателю w)
6-7 - позиция вывода на экран изображения (экранные координаты)
8 - масштаб вывода
9 - указатель на окно или двухмерный массив int в котором хранится изображение или -1 если получаем снимок экрана

Имею в виду как в инструменте быстрого создания схем?
(Добавление)
И ещё окно мерцает сильно при запуске в игре, можно это как то исправить?
10. Kibor - 02 Июня, 2019 - 07:06:44 - перейти к сообщению
 Budni пишет:
И ещё окно мерцает сильно при запуске в игре, можно это как то исправить?

Игра тоже хочет обновить экран и вывести свое изображение.
Исправить это можно только если прорисовывать непосредственно на холсте котором рисует игра перед выводом изображения. То есть никак.

Powered by ExBB FM 1.0 Final