当应用程序中使用多次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);
|