Поиск контекста графического устройства для пикселей определенного цвета - PullRequest
0 голосов
/ 19 августа 2009

Я работаю над написанием некоторого кода автоматизации и сталкиваюсь с проблемой поиска эффективного способа проверки пикселей, которые в настоящее время существуют на дисплее.

Я ознакомился с функцией GetPixel , которая существует в библиотеке gdi32, но она слишком медленная (на самом деле для сканирования линии размером около 1900 пикселей требуется около 10 секунд).

Я выдвинул идею создания растрового изображения из сегментов контекста графического устройства и тестирования, если это более эффективно (что я не могу себе представить, учитывая, что это займет много времени) чтобы быть в курсе происходящего с изображением на экране), но прежде чем я это сделаю, я бы хотел узнать, есть ли у кого-нибудь идеи получше.

Что мне действительно нравится, так это эффективный способ собрать двумерный массив цветов пикселей в некоторых или во всех существующих (или достаточно близких к настоящему) графическом контексте, возможно, с использованием .NET.

Ответы [ 2 ]

1 голос
/ 19 августа 2009

Вы должны заблокировать изображение и работать с памятью напрямую. Есть хорошая статья о том, как это сделать здесь .

0 голосов
/ 01 сентября 2009

Я закончил тем, что сделал снимок экрана всего графического контекста и искал в полученном растровом изображении именно то, что искал в статическом контексте. Затем, поскольку область графического вывода, которой я занимался, составляла всего около 70x70 пикселей, я просто захватывал эту небольшую часть каждые 10 миллисекунд и проверял ее на предмет интересных изменений.

Это не требовало небезопасного кода или блокировки графического контекста и было достаточно эффективным.

...