在屏幕上绘图

时间:2013-02-21 00:32:09

标签: c++ windows drawing

我目前正在使用OpenCV开发一个应用程序来对屏幕上的元素进行视觉识别。

虽然不需要过程的直观表示,但如果我能找到一种直接在屏幕上绘制圆圈,线条和可能的文本的方法,它将非常有用于调试目的,而不需要应用程序窗口。

例如,某些应用程序会在屏幕上绘制HUD。他们是如何做到的?

我需要一种方法让我的绘画永远在前面。一般来说,我设法找到的所有方法都涉及在窗口上绘画(WinAPI,Direct2D,OpenGL)。是否有一种解决方法可以让它看起来像是桌面上的停留(包括所有打开的窗口)?

2 个答案:

答案 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"),如果我没有弄错的话。