CImage 缩放闪烁问题困扰
void CZYDBMSView::OnDraw(CDC* pDC)
{
CZYDBMSDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
if(pDoc->m_picture.IsNull())
pDoc->m_picture.Load(_T("D:\\3525.00-475.00.jpg"));
SetStretchBltMode(pDC->m_hDC,HALFTONE);
SetBrushOrgEx(pDC->m_hDC,0,0,NULL);
int imgW=pDoc->m_picture.GetWidth();
int imgH=pDoc->m_picture.GetHeight();
int width=imgW*m_zoomindex;
int height=imgH*m_zoomindex;//缩放后长宽
CRect rect;
GetClientRect(&rect);
CImage memimg; //创建CImage缓存
memimg.Create(imgW,imgH,pDoc->m_picture.GetBPP());
HDC tmpdc = memimg.GetDC();
CDC memDC;
memDC.Attach(tmpdc);
memDC.FillSolidRect(rect, RGB(255, 255, 255));
pDoc->m_picture.Draw(tmpdc,0,0,imgW,imgH);
memimg.Draw(pDC->m_hDC,0,0,width,height); //将CImage缓存贴到dc上
memDC.Detach(); //释放这两个,不释放crash
memimg.ReleaseDC();
}
这样处理后依然闪烁,加载的图片大小为3M,CImage 双缓存避免闪烁 是这样使用的吗,在网上也看到一些类似用法,但都没能满意解决问题,双缓存到底怎么使用,请各位高手指教。