void CGraphicView::OnDraw(CDC* pDC)
{
CGraphicDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: add draw code for native data here
CFont *oldFont = pDC->SelectObject(&m_font);
pDC->TextOutW(0, 0, m_strFontName);
pDC->SelectObject(oldFont);
//显示位图代码;放到此处是在响应WM_DRAW消息时显示位图,当窗口改变时,程序需要先擦出背景,再显示位图;
//与在响应WM_ERASEBKGND消息(擦出背景)时直接显示位图相比,时间要长,故出现闪屏效果更明显
//但WM_ERASEBKGND消息响应函数擦除背景时好像擦除不干净,可以将显示位图位置不占据整个view区尝试一下
/*
CBitmap bitmap;
bitmap.LoadBitmapW(IDB_TEMPER);
BITMAP btm;
bitmap.GetBitmap(&btm);
CRect rect;
GetClientRect(&rect);
CDC dcCpt;
dcCpt.CreateCompatibleDC(pDC);
dcCpt.SelectObject(&bitmap);
//pDC->BitBlt(100, 50, 600, 400, &dcCpt, 0, 0, SRCCOPY);
pDC->StretchBlt(100, 50, rect.Width(), rect.Height(), &dcCpt, 0, 0, btm.bmWidth, btm.bmHeight, SRCCOPY);
*/
//双缓冲显示位图
CBitmap oldBit
MFC双缓冲显示位图
最新推荐文章于 2021-07-28 11:01:17 发布
在MFC中,为避免位图显示时的闪屏现象,通常采用双缓冲技术。该博客详细介绍了如何在`OnDraw`和`OnEraseBkgnd`函数中实现双缓冲来平滑显示位图,包括创建兼容DC,加载位图,进行位图的复制和绘制,最后清理资源。
摘要由CSDN通过智能技术生成