c++ - 在屏幕上绘图

标签 c++ windows drawing

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

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

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

我需要一种方法让我的绘图始终位于最前面。一般来说,我设法找到的所有方法都涉及在窗口上绘画(WinAPI、Direct2D、OpenGL)。是否有一种变通方法可以使它看起来只是桌面上的停留(包括所有打开的窗口)?

最佳答案

为了调试的目的,直接在屏幕上画图就可以了。 IIRC GetDC(0) 将为您提供屏幕的设备上下文,但请检查整个函数系列。在 Windows 7 中,它甚至不会影响其他应用程序的显示,据报道它在 Mac 上同样“安全”。


例如,在屏幕的左上角绘制一个椭圆:

#include <windows.h>

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

如果图形位于窗口顶部并且该窗口被移动,则该图形会消失。

关于c++ - 在屏幕上绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992589/

相关文章:

c++ - 有没有办法中止 SQLite 调用?

scheme - gimp 脚本-fu : drawing a simple line

ios - 波形绘制性能优化

c++ - 具有自定义标量类型的特征值 : Matrix multiplication with custom type fails with `use of overloaded operator ' *' is ambiguous`

c++ - 从多个线程写入静态数据实际上安全吗

c++静态库太大,为什么?

c++ - 强制 SFINAE 使用不同的返回类型

c - CUDA 内联汇编从 GAS 到 Intel 的翻译

python - 请建议在 Windows 上的 Pycharm 中使用 Virtualenv 的最佳实践

ios - 如何使用 Objective-C 在 iOS 中的 PDF 上绘制平滑的墨水注释