szgzwf

http://www.etsec.com.cn

导航

windows 双缓冲绘图

 

windows双缓冲的作用:解决大多数闪烁问题

因为,当我们需要不停的在屏幕上绘制图案的时候,窗口会不停的被重绘,这就导致出现闪烁问题。

 

双缓冲技术的原理: 先将要绘制的图全部写进一个内存DC里,然后将内存DC里的内容,一次性绘制到窗体上。

简单的说一下步骤:

 

1.创建一个窗体的兼容DC:

                                 HDC hdcDst = ::GetDC( m_hWnd );

 

[cpp]
  1. m_hdcMem          = ::CreateCompatibleDC(hdcDst); //hdcDst 为窗体的dc  
  2. hBitMap   = ::CreateCompatibleBitmap(hdcSrc,nWeight,nHeight);  //nWeight,nHeight 为窗体的宽 和 高  
  3. ::SelectObject(m_hdcMem,hBitMap); //将兼容位图选进兼容Dc里(因为,兼容DC是内存,只有这样才能知道需要多大的内存,来保存绘图)  
2.在兼容DC里画图:

 

  略(具体就是用 m_hdcMem 这个兼容DC去画图)

3.将兼容DC的内容拷贝到 窗体的DC中,完成显示:

 

[cpp]
  1. ::BitBlt(hdcDst,0,0,nWeight,nHeight,hdcNewMem,0,0,SRCCOPY);  
4.善后工作:

 

 :: DeleteDC(Parameter)

 ::ReleaseDC(Parameter);
::DeleteObject(Parameter);

posted on 2012-11-06 17:28  szgzwf  阅读(163)  评论(0)    收藏  举报