我目前正在使用OpenCV开发一个应用程序来对屏幕上的元素进行视觉识别。
虽然不需要过程的直观表示,但如果我能找到一种直接在屏幕上绘制圆圈,线条和可能的文本的方法,它将非常有用于调试目的,而不需要应用程序窗口。
例如,某些应用程序会在屏幕上绘制HUD。他们是如何做到的?
我需要一种方法让我的绘画永远在前面。一般来说,我设法找到的所有方法都涉及在窗口上绘画(WinAPI,Direct2D,OpenGL)。是否有一种解决方法可以让它看起来像是桌面上的停留(包括所有打开的窗口)?
答案 0 :(得分:4)
为了调试,只需在屏幕上绘制字面。 IIRC GetDC(0)
将为您提供屏幕的设备上下文,但请查看整个系列的功能。在Windows 7中,它甚至没有弄乱其他应用程序的显示器,据说它在mac上同样“安全”。
例如,这会在屏幕的左上角绘制一个椭圆:
#include <windows.h>
int main()
{
HDC const dc = GetDC( 0 );
Ellipse( dc, 10, 10, 200, 200 );
}
如果图形位于窗口顶部并且该窗口被移动,则图形会消失。
答案 1 :(得分:0)
您可以实现屏幕的设备上下文(DC),并像往常一样在该DC中绘制。输出将定向到屏幕。要实现这一点,请致电WinApi GetDC("DISPLAY")
,如果我没有弄错的话。