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)
# マルチポストなので、あえてこちらで。
まず、Windowベースである以上、ちらつきはどうしても
生じる可能性がある、ということに注意してください。
その上で、
Monitor_frm.Monitor.hDCとは、どんなhDCなのでしょうか?
もしそれがVB標準のものである場合、AutoRedrawプロパティ
などはどのようにしていますか?
VB6標準の機能でちらつきが起きる原因の一つには、描画時
に背景色で塗りつぶす、というものがあります。サブクラス化
などして、これを握りつぶすとちらつきが減る場合もあります。
# もちろん、全く改善されない場合もあります。
ただ一般的には、まずは描画領域の適正化でしょうね。
まぁ、私ならば面倒なのでDirectXを使うとは思います。
ツイート | ![]() |