中井技術工房 でかく見たいねんU トップ > でかく見たいねんU > ここ

参照,その他   Win7 で画面RGB情報を高速取得


からくり
内部処理

内部処理に興味がある人向けに、どのように実現しているかを説明します。
下図が概要です。


簡単に言えば、モニタゾーンの BMP 情報(RGB に展開できる情報 *1 )を指定インタバルで見張っておき、1ドットでも変化があれば、StretchBlt 機能で指定整数倍で拡大転送しています。
StretchBlt だけでも拡大表示機能は実現できますが、メモリ内でBMP情報処理を行って、変化のあるときのみ転送することによりちらちらを防止しています。

*1 RGB展開を止め、BMP情報のまま変化を検知するようにしました。(H29.11.25)

メモリ上のコピーDCを利用

CDC のコピーをメモリ上に作り、モニタDCから画像転送し、安定した画像が得られるまでくりかえします。これを今回画像とします。

変化が検出されたときだけモニタへ画像転送

指定インタバルで指定画像取得を繰り返し、前回と変化があったときだけモニタへ転送し、表示更新します。

ブロック分割

指定ゾーンを指定数で等分割し、変化のないブロックをマスクし、変化のあったブロックだけを再描画するようにしています。
ちらちら防止用です。全体をいつも再描画するとけっこういらいらします。

転送画像がにじんでいたら?

整数倍で StretchBlt していますので、拡大されたものが にじむことはない はずです。

にじんでいるとすれば、画面表示そのものがにじんでいるはずで、モニタがそのモニタの最適ドット数設定になっていない、文字サイズが標準ではない、ことなどが考えられます。
とくにアイコンとその説明などはWindows によってサイズ調整されているのでこのような可能性大です。



トップ > 頁トップ