2017-12-20 3 views
-2

GDIとPython APIを使用して複数のピクセルを読み取ろうとしています。 私が読んでいる画面部分は非常に小さく、画面をメモリデバイスのコンテキストにコピーしている間、私はその特定の部分だけを考えています。GDIを使用してWindowsの画面部分を読む方法は、更新があった場合のみですか?

私は連続してポーリングしていて、新しい画面と古い画面とを比較しているため、CPU使用率が高くなっています。 画面が更新されたときにのみ画面を読み込む効率的な方法はありますか?

+0

最も簡単なことは、各比較の後にスリープを呼び出すことです。そうすれば、CPU使用率が大幅に低下します。それはおそらく1000を言うよりも秒50の比較を持つのに十分かもしれません。 –

+0

@MichaelWalz私たちの画面は継続的に更新されているので、私が睡眠を使用する場合、情報が欠落する可能性があります。私はプッシュベースのメカニズムを探しています。 – Rahul

答えて

0

WM_PAINTの実行中に発生した更新処理がわかっている場合は、ウィンドウフック(CallWndProcまたはCBTProcフック)をインストールしてWM_PAINTを目的のウィンドウにディスパッチした後でアクションを実行できます。

+0

私は別のスレッドをいくつかのデータをウィンドウに書き込んでいて、update()関数を呼び出しています。読み込みコードは書き込みスレッドとは独立しているので、あなたのアプローチを試すことができるかどうかはわかりません。 – Rahul

+2

@Rahul:これはかなり壊れたデザインです。ウィンドウを所有しているスレッド以外のスレッドからレンダリングしようとしないでください。ほとんどのGUIライブラリでこれは当てはまります。 – IInspectable

関連する問題