Windowsプログラミング 画面描画 ちらつき
SetDIBitsToDevice関数を使って画面に描画をした後、LineTo関数やEllipse関数を使って
その画面上に線や丸を表示させる処理をしているのですが、描画処理を一度にできていないためか
ちらつきが発生してしまいます。
調べてみるとビットマップのマルチバッファリングなどが解決策にあるのですが、
私は一次元配列で画素値を格納していてビットマップに情報は保持していないため
よく解決策で使われているBITBLTが使えない状態です。
裏画面に描画しておいて、最終的に描画は一度だけにするという考えは分かるんですが、
これをSetDIBitsToDevice関数を用いてちらつきが発生しないようにできるんでしょうか?
プログラムとしては画像の上に線と円をひたすら描画していくようなイメージをしています。
アドバイスお願いします!
case WM_PAINT:
hDC=BeginPaint(hParent,&ps);
SetDIBitsToDevice( ps.hdc, 0, 0,// コピー先x,y座標
pimg -> bih.biWidth,// DIBの幅
pimg -> bih.biHeight,// DIBの高さ
0, 0,// DIBの座標
0,// 走査線
pimg -> bih.biHeight,/ 走査線数
pimg -> lpBmpData,
(BITMAPINFO *)&( pimg -> bih),// BITMAPINFOにキャスト
DIB_RGB_COLORS );
for(int i=0; i<number-1; i++){
if(i==0){
hPen1 = CreatePen(PS_SOLID, 1, RGB(255,0,0));
electObject(hDC,hPen1);
MoveToEx(hDC,Xs,Ys,NULL);
Ellipse(hDC,Xs-2,Ys-2,Xs+2,Ys+2);
}else{
LineTo(hDC,Xe,Ye);
Ellipse(hDC,Xs-2,Ys-2,Xs+2,Ys+2);
}
}
お礼
ありがとうございました