在屏幕上绘图
Drawing on the screen
我目前正在使用OpenCV开发一个应用程序,以对屏幕上的元素进行视觉识别。
虽然不需要过程的可视化表示,但如果我能找到一种方法,在屏幕上直接画圆、线,可能还有文本,而不需要应用程序窗口,这将对调试非常有用。
例如,有些应用程序会在屏幕上绘制HUD。他们是怎么做到的?
我需要一种方法让我的画永远在最前面。一般来说,我设法找到的所有方法都涉及在窗口上绘画(WinAPI、Direct2D、OpenGL)。有没有一种变通方法可以让它看起来像是在桌面上停留(包括所有打开的窗口)?
为了调试的目的,只需在屏幕上直接绘制即可。IIRC GetDC(0)
将为您获取屏幕的设备上下文,但请查看整个函数家族。在Windows7中,它甚至不会破坏其他应用程序的显示,据报道,它在mac上同样"安全"。
例如,这在屏幕的左上角画了一个椭圆:
#include <windows.h>
int main()
{
HDC const dc = GetDC( 0 );
Ellipse( dc, 10, 10, 200, 200 );
}
如果图形位于窗口顶部并且该窗口被移动,则该图形将消失。
您可以实现屏幕的设备上下文(DC),并像往常一样绘制该DC。输出将指向屏幕。为了实现这一点,如果我没有弄错的话,可以调用WinApi GetDC("DISPLAY")
。
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- Winapi:屏幕截图未显示在窗口中
- 如何在快板的屏幕中显示子位图的绘制?
- 按回车键后输出屏幕关闭
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?
- SFML 向下移动时如何围绕屏幕中心旋转?
- 截取屏幕截图后程序卡住
- C++鼠标单击时的屏幕截图不起作用
- 屏幕插入运算符<<的运算符过载问题
- 获取网格中心的屏幕位置
- SFML 中的字体.信息不显示在屏幕上.显示的不是信息,而是点
- GTKMM:拍摄绘图区域的屏幕截图?
- 使用C++在屏幕上绘图
- 如何在窗口中直接在屏幕上绘图
- 如何在屏幕上快速绘图
- 尝试在屏幕上显示绘图时黑屏
- 在屏幕上绘图