Рисование на экране

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

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

Есть определенные приложения, которые, например, рисуют HUD на экране. Как они делают это?

Мне нужен способ, чтобы мой рисунок всегда был впереди. В общем, все способы, которые мне удалось найти, включают рисование на окне (WinAPI, Direct2D, OpenGL). Есть ли обходной путь, чтобы он выглядел так, будто это просто переход на рабочий стол (включая все открытые окна)?

3

Решение

с целью отладки буквально нарисуйте на экране. IIRC GetDC(0) Вы получите контекст устройства для экрана, но обратите внимание на целое семейство функций. в Windows 7 он даже не запутывает дисплеи других приложений, и, по сообщениям, он также «безопасен» для Mac.


например, это рисует эллипс в верхнем левом углу экрана:

#include <windows.h>

int main()
{
HDC const dc = GetDC( 0 );
Ellipse( dc, 10, 10, 200, 200 );
}

графика исчезает, если она находится над окном, и это окно перемещается.

4

Другие решения

Вы можете получить контекст устройства (DC) экрана и нарисовать этот DC как обычно. Вывод будет направлен на экран. Для этого позвоните в WinApi GetDC("DISPLAY"), если я не ошибаюсь.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector