SetDIBitsToDeviceでの画像表示について


さち  2006-06-23 04:20:26  No: 132005

VB  6.0にて

SetDIBitsToDevice  を使用して画像の表示を行っています。

下記のプログラムにて行っており、
タイマーを使って連続的に表示させています。
(毎回、表示する画像は異なるため)

その中で、時々画面更新の際、表示する以外の領域も含め、
画面がちらつく?今回表示しているフォームの後ろにある画面
が一瞬うつってしまう等の症状が出ます。

分かりにくいかと思いますが、アドバイスがありましたらよろしくお願いします。

*サンプル 
           bmpInfo.biBitCount = 24
            bmpInfo.biClrImportant = 0
            bmpInfo.biClrUsed = 0
            bmpInfo.biCompression = 0
            bmpInfo.biHeight = 1024
            bmpInfo.biPlanes = 1
            bmpInfo.biSize = 40 ' SizeOf(BITMAPINFOHEADER)
            bmpInfo.biSizeImage = 1280 * 1024 * 3
            bmpInfo.biWidth = 1280
            bmpInfo.biXPelsPerMeter = 0
            bmpInfo.biYPelsPerMeter = 0
            g_lRet = SetDIBitsToDevice(Monitor_frm.Monitor.hDC, 0, 0, 1280, 1024, 0, 0, 0, 1024, BitmapFrame(0), bmpInfo,DIB_RGB_COLORS)


K.J.K.  2006-06-24 22:48:35  No: 132006

# マルチポストなので、あえてこちらで。

まず、Windowベースである以上、ちらつきはどうしても
生じる可能性がある、ということに注意してください。

その上で、
Monitor_frm.Monitor.hDCとは、どんなhDCなのでしょうか?
もしそれがVB標準のものである場合、AutoRedrawプロパティ
などはどのようにしていますか?

VB6標準の機能でちらつきが起きる原因の一つには、描画時
に背景色で塗りつぶす、というものがあります。サブクラス化
などして、これを握りつぶすとちらつきが減る場合もあります。
# もちろん、全く改善されない場合もあります。

ただ一般的には、まずは描画領域の適正化でしょうね。

まぁ、私ならば面倒なのでDirectXを使うとは思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加