Автоматизация и боты


 Помощь      Поиск      Пользователи

 

Главная     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Описание: Для работы с отдельными каналами 3-байтового цвета Кибор
Skycrew
Отправлено: 07 Ноября, 2019 - 17:18:37
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 116
Дата рег-ции: Июль 2014  
Репутация: 0
Карма 0




Цвет кодируется 3-мя байтами, например белый: ff ff ff или в переводе в десятичную систему: 16777215 - в таком виде Кибор и сохраняет цвета пиксели в массивах, когда захватывает с экрана. Нужно получить отдельные байты цветов из переменных по указателю из dll на C++ чтобы дальше с ними можно было отдельно работать.

Суть задачи состоит в том, чтобы через Dll производить операции с цветами в массивах пикселей, конкретно мне сейчас нужно более гибко отслеживать динамические пиксели по отдельным цветовым каналам, а это невозможно сделать в Кибор.

Можно, как вариант, прямо в Киборе раскладывать цвета на 3 составляющих через: rvalue(a) / gvalue(a) /rvalue(b) и класть в отдельные массивы, чтобы в таком виде передавать в dll, но это работает очень долго(
 
 Top
Zireael
Отправлено: 08 Ноября, 2019 - 02:06:37
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1840
Дата рег-ции: Нояб. 2017  
Репутация: 203
Карма 65




Вопрос-то в чём? Если разложить цвет на каналы, то можно так:
CODE:
// код C++
#include <iostream>

int main()
{
int color = 10054493; // цвет
int R = color & 255; // красный
int G = (color >> 8) & 255; // зелёный
int B = color >> 16; // синий
std::cout << R << " " << G << " " << B;
}
 
 Top
Skycrew
Отправлено: 08 Ноября, 2019 - 09:44:24
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 116
Дата рег-ции: Июль 2014  
Репутация: 0
Карма 0




 Zireael пишет:
Вопрос-то в чём? Если разложить цвет на каналы, то можно так:
CODE:
// код C++
#include <iostream>

int main()
{
int color = 10054493; // цвет
int R = color & 255; // красный
int G = (color >> 8) & 255; // зелёный
int B = color >> 16; // синий
std::cout << R << " " << G << " " << B;
}


Супер! Именно это было и нужно. Выручаешь уже не в первый раз) Спасибо большое!!

(Отредактировано автором: 08 Ноября, 2019 - 09:44:44)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by