MFC双缓冲显示位图

在MFC中,为避免位图显示时的闪屏现象,通常采用双缓冲技术。该博客详细介绍了如何在`OnDraw`和`OnEraseBkgnd`函数中实现双缓冲来平滑显示位图,包括创建兼容DC,加载位图,进行位图的复制和绘制,最后清理资源。
摘要由CSDN通过智能技术生成
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值