画面の一部をすばやく簡単にキャプチャする方法はありますか?getPixel は遅く、GetDIBits は最初は少し複雑に見えました

StackOverflow https://stackoverflow.com/questions/859181

質問

Windows 上で getPixel を使用して、デバイス コンテキストを null にして画面の一部をキャプチャするコードをいくつか試行していました (ウィンドウの代わりに画面をキャプチャするため) が、非常に遅かったです。GetDIBits() は高速に実行できるようですが、少し複雑なようです...領域全体を配列に入れることができ、pixel[x][y] がピクセルの 24 ビット カラー コードを返すライブラリはあるのでしょうか。

それともそのようなライブラリはMacに存在しますか?それとも、Ruby や Python にはそれを実行できるライブラリがすでにあるのでしょうか?

役に立ちましたか?

解決

私はこれをやったことがありませんが、試してみたいと思います:

  1. createcompatibledCを使用してメモリデバイスコンテキスト(DC)を作成します。デスクトップ(getDC(null))のデバイスコンテキストを渡します。

  2. キャプチャする領域と同じサイズのビットマップ(CreateCompatibleBitMapを使用)を作成します。

  3. 作成したDCにビットマップを選択します(SelectObjectを使用)。

  4. デスクトップDCから作成したDCまでBitBltを実行します(SRCCOPYフラグを使用)。

デバイス コンテキストの操作は、間違った順序で行うと GDI リークを引き起こす可能性があるため、使用するすべての GDI 関数に関するドキュメントを必ず読んでください (例:SelectObject、GetDC など)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top