Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2015, 19:52   #1
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию Отлов цвета в определенной области экрана

Всем доброго времени суток. На сколько сложно реализовать такой механизм? Хочется автоматизировать некоторые вещи. Ситуация такая: в определенной области экрана (всегда в одном и том же месте) появляется текст (одно слово, оно всегда разное) разного цвета (синий, красный и зелёный). Алгоритм автоматизации такой:
-если цвет слова зелёный, то сделать одно действие;
-если цвет слова синий, то сделать второе действие;
-если цвет красный красный, то сделать третье действие;
Сложность для меня именно в первых частях(определить цвет), со второй частью всё просто. Я так понимаю достаточно отловить цвет определенного пикселя и затем сравнивать его с синим, зеленым и красным. Но это всё теория, а на практике я даже боюсь представить сколько тут тягомотины, тем более для моего уровня. У кого есть какие мысли? Буду признателен любой помощи.
adkomissarov вне форума Ответить с цитированием
Старый 01.04.2015, 20:57   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
достаточно отловить цвет определенного пикселя
Координаты пикселя заведомо известны?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 01.04.2015, 21:49   #3
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Координаты пикселя заведомо известны?
Да..........
adkomissarov вне форума Ответить с цитированием
Старый 01.04.2015, 21:56   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Прочитай вот это вот.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 01.04.2015, 22:29   #5
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Прочитай вот это вот.
Возвращает в виде числа, например 4408130, как определить цвет по вот такому числу, это чтобы убедиться в правильности работы.

Последний раз редактировалось adkomissarov; 01.04.2015 в 22:35.
adkomissarov вне форума Ответить с цитированием
Старый 01.04.2015, 22:37   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

4408130 = 0x434342 - доли R, G, B в цвете этого пикселя.

Ещё вопросы е?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 01.04.2015, 22:39   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Еще как вариант:
Код:
var
  Desktop: TCanvas;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  P: TPoint;
  C: TColor;
begin
  GetCursorPos(P);
  C := Desktop.Pixels[P.X,P.Y];
  Color := C;
  Caption :=
    'RGB('+
    IntToStr(GetRValue(C))+
    ','+
    IntToStr(GetGValue(C))+
    ','+
    IntToStr(GetBValue(C))+
    ')';
end;

initialization
  Desktop := TCanvas.Create;
  Desktop.Handle := GetDC (0);

finalization
  Desktop.Free

end.

Последний раз редактировалось Arigato; 01.04.2015 в 22:41.
Arigato вне форума Ответить с цитированием
Старый 01.04.2015, 22:40   #8
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
4408130 = 0x434342 - доли R, G, B в цвете этого пикселя.

Ещё вопросы е?
Е!) Почему 4408130 = 0х434342
adkomissarov вне форума Ответить с цитированием
Старый 01.04.2015, 22:48   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Да не знаю. :D Но вопрос - просто супер!!! Типа "почему негры чёрные?".
Вроде всегда так было, есть и будет есть!

Как теперь заснуть? Я ФШОКЕ!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 01.04.2015, 22:51   #10
adkomissarov
Пользователь
 
Регистрация: 21.01.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Да не знаю. :D Но вопрос - просто супер!!! Типа "почему негры чёрные?".
Вроде всегда так было, есть и будет есть!

Как теперь заснуть? Я ФШОКЕ!
Хорошо, откуда ты взял вот это - 0х434342
adkomissarov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цвета определенной строки в richedit qwas777 Общие вопросы Delphi 3 28.01.2013 13:55
Как сделать скриншот определенной части экрана? JonMagon Помощь студентам 11 13.05.2011 09:45
выбор определенной области с таблицы сергей7 Microsoft Office Excel 5 07.03.2011 21:35
AutoIt Подсчет кол-ва пикселей определенного цвета в определенной области активного окна z3xix13 Помощь студентам 0 02.10.2010 14:27
Чтение области экрана АлМазСофт Помощь студентам 5 28.01.2010 12:52