Конференция "Media" » Определение цвета точки экрана
 
  • Pavel (29.07.10 20:51) [0]
    Здравствуйте!
    Есть такая задача:
    1. В заданной области экрана необходимо отслеживать цвет пикселей.
    2. Если цвет хоть одного пикселя в заданной области совпал с эталонным (заданным пользователем), то необходимо выполнить действие (например, выдать звуковой сигал);
    Главный вопрос такой – какими компанентами Delphi воспользоваться для:
    А) получения заданной области экрана – растровый рисунок с координатами x1,y1 – x2-y2;
    Б) получения цвета пикселя в этом прямоугольнике

    Сейчас делаю начитку по теме графики в дельфи, но может быть профессионалы подскажут оптимальный путь сразу..
  • 0x00FF00 © (30.07.10 01:51) [1]

    > Главный вопрос такой – какими компанентами Delphi воспользоваться

    могу сказать сразу: готовых компонентов Вы не найдёте.
    предлагаю API-функции BitBlt и GetPixel.

    http://msdn.microsoft.com/en-us/library/dd144909(VS.85).aspx
    http://msdn.microsoft.com/en-us/library/dd183370(v=VS.85).aspx
  • Омлет © (02.08.10 09:34) [2]
    GetPixel - слишком медленная операция. Необходимо копировать нужную область (через BitBlt) во временный Bitmap, а потом сканировать напрямую память на наличие нужного пикселя, хотя бы через ScanLine.
  • 0x00FF00 © (03.08.10 19:10) [3]

    > Омлет ©   (02.08.10 09:34) [2]

    BtiBlt+ScanLine медленнее одиночного GetPixel.

    зато BitBlt единственного пикселя в специально рассчитанной позиции — быстрее и того и другого.
  • Омлет © (23.08.10 09:33) [4]
    Речь-то не про одиночный пиксель, а про область.
  • Б_ (24.08.10 23:34) [5]
    Копируешь нужную область экрана через BitBlt.
    Накладываешь полученный растр на эталонный  с флагом SRCINVERT.
    Потом проходишь по сканлайнам битмапа, если цвет пикселя обоих растов равен чёрному, то совпадение.

    Как-то так.
  • Eraser © (27.08.10 19:16) [6]
    > Омлет ©  

    не надоело радмины изобретать? )
  • Омлет © (27.08.10 21:35) [7]
    Не бойтесь, мне это не нужно.
  • Pavel (29.11.11 20:26) [8]
    esdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gtesdsdgsd gt
  • Pavel (29.11.11 20:27) [9]
    Откуда ж тут гетпиксел взять? (проверяю, прошу удалить)
  • Kolya (29.11.11 20:27) [10]
    Откуда ж тут гетпиксел взять? (проверяю, прошу удалить)
  • имя (30.04.14 18:52) [11]
    Удалено модератором
  • имя (30.04.14 18:52) [12]
    Удалено модератором
 
Конференция "Media" » Определение цвета точки экрана
Есть новые Нет новых   [118241   +23][b:0][p:0]