双缓冲图像显示
在picture控件上利用双缓冲显示图片,以前没用过,求高手指教哪里写得有问题,为什么显示过程中,都是黑漆漆的一片
CBitmap* bmp = pDlg->IplImage2CBitmap(pDlg->dst);
CDC *pDC = pDlg->GetDlgItem(IDC_STATIC_PIC)->GetDC();//得到picture控件的dc
pDlg->GetDlgItem(IDC_STATIC_PIC)->GetClientRect(&rect);//获取可显示的矩形区域
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);//创建一个内存环境,以便在内存中保存位图,并与指定的窗口设备环境兼容
dcMem.SelectObject(&bmp);//将实际的位图点入到设备内存环境
//创建于窗口一样大的兼容位图
CBitmap bmp1;
bmp1.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());//创建一个内存环境,以便在内存中保存位图,并与指定的窗口设备环境兼容
CDC BkDC;
BkDC.CreateCompatibleDC(pDC);//创建一个内存环境,以便在内存中保存位图,并与指定的窗口设备环境兼容
BkDC.SelectObject(bmp1);//将创建的位图调入到设备内存环境
//在位图缓冲区上画图 BkDC.BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//从原设备中复制位图到目标设备
//把缓冲区中的图贴到控件上
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&BkDC,0,0,SRCCOPY);//从原设备中复制位图到目标设备
[解决办法]
首先,我这个肯定是双缓冲,你没看见 画背景 和 画文字 都在memdc上吗
===============
它这个没有文字,只是贴图,普通的贴图也是这样写的。