mfc 双缓存

       CRect   rect; 
       //获取显示区域大小(该值为据对坐标,使用时需转换)
       GetWindowRect(rect);
    rect.SetRect(0, 0, rect.Width(), rect.Height());
//定义一个内存设备描述表对象(即后备缓冲区) CDC MemDC; //定义一个位图对象 CBitmap MemBitmap;
//建立与屏幕设备描述表(前端缓冲区)兼容的内存设备描述表句柄(后备缓冲区) MemDC.CreateCompatibleDC(NULL);
    
//这时还不能绘图,因为没有位图的设备描述表是不能绘图的 //下面建立一个与屏幕设备描述表(或者内存设备描述表)兼容的位图 MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
    
//将位图选入到内存设备描述表 //只有选入了位图的设备描述表才有地方绘图,画到指定的位图上 CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
    
//先用背景色将位图清除干净,RGB(0,0,0)设置自己的颜色RGB值 MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(0, 0, 0)); //MemDC.FillSolidRect(rect, RGB(0, 0, 0));//直接使用rect同可
     
    
//使用MemDC绘制自己需要的内容,此处以直线为例     MemDC.MoveTo(0, 0);
    MemDC.LineTo(100, 100);

    //把内存DC复制到输入DC中
    pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC, 0, 0, SRCCOPY);

    //绘图完成后的清理
    MemBitmap.DeleteObject();
    MemDC.DeleteDC();
posted @ 2020-11-18 20:29  燕钰达  阅读(180)  评论(0)    收藏  举报