VC画图双缓冲去闪烁

来源:互联网 发布:工艺流程图设计软件 编辑:程序博客网 时间:2024/05/21 12:48

VC显示双缓冲  

当应用程序中使用多次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.LineTo(i,N);     

}    

6、使用BitBlt函数将memdc内容拷贝至pDC  

pDC->BitBlt(0,0,SCREEN_WIDTH,SCREEN_HEIGHT,&memdc,0,0,SRCCOPY);  

7、最后别忘了,资源清理   

memdc.SelectObject(poldbmp); 

Poldbmp->DeleteObject();

Memdc->DeleteDC();