-
Здравствуйте!
Есть такая задача:
1. В заданной области экрана необходимо отслеживать цвет пикселей.
2. Если цвет хоть одного пикселя в заданной области совпал с эталонным (заданным пользователем), то необходимо выполнить действие (например, выдать звуковой сигал);
Главный вопрос такой – какими компанентами Delphi воспользоваться для:
А) получения заданной области экрана – растровый рисунок с координатами x1,y1 – x2-y2;
Б) получения цвета пикселя в этом прямоугольнике
Сейчас делаю начитку по теме графики в дельфи, но может быть профессионалы подскажут оптимальный путь сразу..
-
-
GetPixel - слишком медленная операция. Необходимо копировать нужную область (через BitBlt) во временный Bitmap, а потом сканировать напрямую память на наличие нужного пикселя, хотя бы через ScanLine.
-
> Омлет © (02.08.10 09:34) [2]
BtiBlt+ScanLine медленнее одиночного GetPixel.
зато BitBlt единственного пикселя в специально рассчитанной позиции — быстрее и того и другого.
-
Речь-то не про одиночный пиксель, а про область.
-
Копируешь нужную область экрана через BitBlt.
Накладываешь полученный растр на эталонный с флагом SRCINVERT.
Потом проходишь по сканлайнам битмапа, если цвет пикселя обоих растов равен чёрному, то совпадение.
Как-то так.
-
> Омлет ©
не надоело радмины изобретать? )
-
Не бойтесь, мне это не нужно.
-
esdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gt
-
Откуда ж тут гетпиксел взять? (проверяю, прошу удалить)
-
Откуда ж тут гетпиксел взять? (проверяю, прошу удалить)
-
Удалено модератором
-
Удалено модератором