Kibor |
Отправлено: 24 Августа, 2013 - 23:19:55
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Функция scanpixel сравнивает введенный цвет с цветом пикселя в веденных координатах ориентируясь на разбежности в цветах RGB.
Синтаксис:
scanpixel(КоординатаX, КоординатаY, цвет_в_int, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, указатель_на _окно)
Возвращает 1 если введенный цвет уложился в диапазн. 0 - не уложился.
Подобрать оптимальные цвета и их количество с учетом разбежности цвета можно с помощью этого инструмента Подбор Цвета Кибор.
Так же возможно сравнивать цвет пикселя загруженного ранее изображения или полученного скриншота в двухмерный массив int
CODE:int SCREEN[500][700];
//...............
int k=scanpixel(200, 125, 35436455, 15, 15, 15, 15, 15, 15, #SCREEN[0][0]);
messagebox (k);
Пояснение:
Каждый цвет состоит из трех основных цветов - Красный(R), Зеленый(G), Синий(B). (R, G, B). Каждый из этих трех цветов обозначается числом от 0 до 255. К примеру цвет (0, 0, 0) будет черный, а (255, 255, 255) белым. (255, 0, 0) красным, а (255, 50, 70) красным с примесью зеленого и синего.
Обозначение параметров:
Красный_меньше_на - тут указываем число НА которое красный компонент может быть меньше того что находится в поиске.
Красный_больше_на - тут указываем число НА которое красный компонент может быть больше того что находится в поиске.
Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на аналогично.
Указатель на окно может принимать -1. Координаты в этом случае экранные. Иначе координаты оконные относительно этого указателя...
..............................................................................................
findcolor - найдет все координаты всех пикселей указанного цвета.
Синтаксис:
findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, w);
Первый параметр - количество максимальное искомых пикселей. Если -1 - искать все сколько найдет.
Второй и третий - указатель на массивы int приемники координат.
Четвертый - седьмой - Начало, конец зоны поиска.
Восьмой - цвет поиска
девятый - указатель на окно. Если -1 - по всему экрану.
Если есть указатель на окно - возвращаемые координаты оконные.
findcolor возвращает количество найденых пикселей
Или -1 если массив приемника меньше по X
-2 размер массива приемника меньше по Y
Так же findcolor может искать с разбежностью цвета.
Синтаксис:
findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, w);
Так же возможно искать цвет пикселя загруженного ранее изображения или полученного скриншота в двухмерный массив int
CODE:int SCREEN[500][700];
//...............
int k=findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, #SCREEN[0][0]);
messagebox (k);
CODE:int SCREEN[500][700];
//...............
int k=findcolor(-1, #x[0],#y[0], стартx, стартy, финишx, финишy, color, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, #SCREEN[0][0]);
messagebox (k);
|
|
|
Dantes3000 |
Отправлено: 14 Марта, 2017 - 23:40:20
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
if(scanpixel(619, 352, 0, 0, 0, 0, 0, 0, 0, -1)==1) goto h;
beep(1000, 200);
beep(1000, 200);
pause(100000);
h:beep(1000, 200);
я ж правильно написал? На рабочем столе черный фон, кибор показывает цвет 0. Не видит его.
(Добавление)
int r=1;
if(scanpixel(1, 1, 0, r, r, r, r, r, r, -1)==1) goto h;
beep(1000, 200);
beep(1000, 200);
pause(100000);
h:beep(1000, 200);
а вот так вот видит. Почему?(Отредактировано автором: 14 Марта, 2017 - 23:45:23) |
|
|
Kibor |
Отправлено: 29 Мая, 2017 - 15:05:53
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Он не должен этого делать.
Посмотрите в диспетчере.
Или выделяется? Тогда надо найти место которое выделяет.
(Добавление)
CODE:win w=window ("Безымянный — Блокнот", "Notepad", -1);
loop()
{
scanpixel(100, 100, 0, 10, 10, 10, 10, 10, 10, w);
scanpixel(100, 100, 0, 10, 10, 10, 10, 10, 10, -1)
}
не выделяет.. |
|
|
|