使用双缓冲显示位图

来源:互联网 发布:淘宝丝芙兰代购能信吗 编辑:程序博客网 时间:2024/06/05 09:57

 

  1. void xxxDlg::ShowBitmap()
  2. {
  3.   CDC memDC;
  4.   CBitmap bmpShow;
  5.   BITMAP bmpInfo;
  6.   CDC* pCurDC = GetDC();//得到当前DC
  7.   memDC.CreateCompatibleDC(pCurDC);//创建兼容的内存DC
  8.   
  9.   bmpShow.LoadBitmap(bmpResID);//bmpResID为位图资源ID号  
  10.   bmpShow.GetBitmap(&bmpInfo);
  11.   
  12.   CBitmap* pOldbmp = memDC.SelectObject(&bmpShow);//将位图选入到内存DC中
  13.   
  14. //此处可以用memDC进行图像绘制,处理等
  15.   pCurDC->StretchBlt(0,0,width,height,&memDC,0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,SRCCOPY);
  16. //copy内存DC到屏幕上显示 ,width,height为分别为显示的宽度和高度
  17.   memDC.SelectObject(pOldbmp);//恢复旧对象
  18.   ReleaseDC(pCurDC);//释放DC
  19. }

   双缓冲就是前台缓冲(显示用)和后台缓冲(内存中),在后台中进行处理计算,处理完后将后台缓冲COPY到前台,可以减少屏幕闪烁,但有延时

   绘图步骤:

1、得到当前窗口DC

2、创建兼容的内存DC

3、将位图选入内存DC,选入后可以作进一步的处理

4、copy内存DC到显示设备

5、清理

 

 

 

原创粉丝点击