4

現在、画面上の要素を視覚的に認識するためのアプリケーションを OpenCV で開発しています。

プロセスを視覚的に表現する必要はありませんが、アプリ ウィンドウを使用せずに円、線、および場合によってはテキストを画面上に直接描画する方法を見つけることができれば、デバッグの目的で非常に役立ちます。

たとえば、画面上に HUD を描画する特定のアプリケーションがあります。彼らはどうやってそれを行うのですか?

絵を常に前面に出す方法が必要です。一般的に、私が見つけたすべての方法には、ウィンドウ (WinAPI、Direct2D、OpenGL) へのペイントが含まれます。デスクトップ上 (開いているすべてのウィンドウを含む) の単なるレイオーバーのように見せるための回避策はありますか?

4

2 に答える 2

4

デバッグの目的で、文字通り画面に描画します。IIRCGetDC(0)は画面のデバイス コンテキストを取得しますが、その関数ファミリ全体を確認してください。Windows 7 では、他のアプリケーションのディスプレイを汚すことさえありません。報告によると、Mac でも同様に「安全」です。


たとえば、これは画面の左上に楕円を描画します。

#include <windows.h>

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

グラフィックがウィンドウの上にあり、そのウィンドウが移動されると、グラフィックは消えます。

于 2013-02-21T01:01:47.750 に答える
0

画面のデバイス コンテキスト (DC) を実現し、通常どおりその DC を描画できます。出力は画面に送られます。GetDC("DISPLAY")それを達成するには、私が間違っていなければWinApi を呼び出します。

于 2013-02-21T01:04:19.823 に答える