GDI +を使用して画面(画面全体、他のすべてのウィンドウの上)に描画しようとしています。
私はHDCを画面に取得するためにGetDCにNULLを渡してから、それを使ってGraphicsオブジェクトを作成し、DrawRectangleを使用して画面に長方形を描画しました。
すべて動作します...例外...四角形の内部は更新されません。GDI +(またはGDI)をInspectに似た画面で描画する
コマンドプロンプトに描画してコマンドプロンプトを移動すると、四角形の内側が黒くなります。 私は長方形の下に何が見えると思うのですか?
ここで、
Pen BluePen(Color(255, 0, 255, 0), 2);
Graphics graphics(screenDC);
graphics.DrawRectangle(&BluePen, myRect);
非常にシンプル。..描画をやっているコードですので、私は画面がないときに更新するように四角形の内部を取得するためにしなければならない何かがあるのでしょうか?または、それを真に透明にする。
================= EDIT =================
まあ、私はあきらめていましたWindows SDKに付属のInspectツールがこれを完全に行うことに気付きました。
私はハイライト矩形に似たものを再作成したいと思います。ウィンドウ(Firefoxなど)を選択してInspectにフォーカスを移すと、完全に更新された状態で自由に移動できます。 ちらつきもありません。
だから...誰がこれを行う方法をInspectが管理しているのですか?
大丈夫です。また... GDIの代わりに、GDI +のウィンドウで
長方形は、現在のペンと現在のBRUSHを使用します。 – BitBank
ウィンドウにのみ描画できます。ウィンドウの背景と同じ透明キーを持つレイヤードウィンドウ(WS_EX_LAYERED)が必要です(UpdateLayeredWindow()を参照)。 –
@HansPassantありがとう、これは私が必要としていたものです。 – Josh