當應用程序中使用多次GDI調用繪制到窗口中時,在窗口清除並被重新繪制時,會出現明顯的閃爍。使用雙緩沖技術可輕松消除閃爍。
步驟如下:
1、假設當前顯示設備上下文為CDC * pDC;
2、使用CDC對象創建可兼容設備上下文,
CDC memdc;
memdc.CreateCompatibleDC(pDC);
3、使用CBitmap對象創建可兼容為圖,
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,SCREEN_WIDTH,SCREEN_HEIGHT);
4、將CBitmap對象選入CDC對象中,
CBitmap *poldbmp=memdc.SelectObject(&bmp);
5、繪圖操作,在memdc中進行,如:
for(int i=0;i<N;i++)
{
memdc.MoveTo(i,0);
memdc.LintTo(i,N);
}
Rectangle(hdcMem,0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
DrawMenuButton(hdcMem);
6、使用BitBlt函數將memdc內容拷貝至pDC
pDC->BitBlt(0,0,SCREEN_WIDTH,SCREEN_HEIGHT,&memdc,0,0,SRCCOPY);
7、最後別忘了,
memdc.SelectObject(poldbmp);