在vc中使用双缓冲显示技术,图像显示不出来,代码如下,请问高手哪里有问题
CBitmap*bmp=pDlg->ToBitmap(pDlg->ptrGrabResult);//将捕获的结果转换成bitmapCDC*pDC=pDlg->GetDlg...
CBitmap* bmp = pDlg->ToBitmap(pDlg->ptrGrabResult);//将捕获的结果转换成bitmap
CDC *pDC = pDlg->GetDlgItem(IDC_STATIC_PIC)->GetDC();//得到picture控件的dc
pDlg->GetDlgItem(IDC_STATIC_PIC)->GetClientRect(&rect);//获取可显示的矩形区域
CDC dcMem;
CBitmap *pOldBitmap = NULL;
dcMem.CreateCompatibleDC(pDC);//创建一个内存环境,以便在内存中保存位图,并与指定的窗口设备环境兼容
pOldBitmap = dcMem.SelectObject(bmp);//将位图调入到设备内存环境
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//将位图复制到实际设备环境
//dcMem.SelectObject(pOldBitmap);//位图选入内存环境中显示后,恢复到原来的内存设备环境
pDlg->ReleaseDC(pDC);
dcMem.DeleteDC(); 展开
CDC *pDC = pDlg->GetDlgItem(IDC_STATIC_PIC)->GetDC();//得到picture控件的dc
pDlg->GetDlgItem(IDC_STATIC_PIC)->GetClientRect(&rect);//获取可显示的矩形区域
CDC dcMem;
CBitmap *pOldBitmap = NULL;
dcMem.CreateCompatibleDC(pDC);//创建一个内存环境,以便在内存中保存位图,并与指定的窗口设备环境兼容
pOldBitmap = dcMem.SelectObject(bmp);//将位图调入到设备内存环境
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//将位图复制到实际设备环境
//dcMem.SelectObject(pOldBitmap);//位图选入内存环境中显示后,恢复到原来的内存设备环境
pDlg->ReleaseDC(pDC);
dcMem.DeleteDC(); 展开
3个回答
展开全部
如果代码里面的函数,这个函数是如何调用,不调用PDC-> BitBlt函数可以显示。的图像控制功能,如来电PDC-> BitBlt函数首先成为无效。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看取得的 bmp 是否为空
追问
bmp不为空,就是显示不出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询