MFC中通地GDI+来画对话框背景,缩放时有闪烁怎么解决?

我在MFC中通地GDI+来画对话框背景,具体是这样的:BOOLCUserClientDlg::OnEraseBkgnd(CDC*pDC){CStringtemp=_T("... 我在MFC中通地GDI+来画对话框背景,具体是这样的:
BOOL CUserClientDlg::OnEraseBkgnd(CDC* pDC)
{
CString temp = _T("res\\bg.jpg");
Gdiplus::Graphics graphics(pDC->m_hDC);
Gdiplus::Image * pBg = NULL;
pBg = Gdiplus::Image::FromFile( temp );
if ( pBg->GetLastStatus() == Gdiplus::Ok )
{
graphics.DrawImage( pBg, 0, 0, 1280, 1024 );
delete pBg;
return TRUE;
}
else
{
delete pBg;
return CDialog::OnEraseBkgnd(pDC);
}
return CDialogEx::OnEraseBkgnd(pDC);
}

但是对话框在缩放时背景闪烁比较严重,边缘有黑边闪过,是怎么回事?
展开
 我来答
百度网友0bf58e4
2012-08-22 · TA获得超过178个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:148万
展开全部
背景重绘去掉
OnEraseBkgnd
return true;

每次重绘背景之后才发生onDraw事件
所以会造成闪烁
return true 就是跟系统说不用重绘了
追问
因为图片文件是存在的,所以按上边代码的逻辑,是从return TRUE那个地方直接退出的,为什么还会闪呢,总感觉窗口大小变化的快,而背景画的慢
追答
resize事件会触发ondraw
你把ondraw事件的代码发出来看看
一般绘制代码都放在ondraw里面完成
leluck
2012-08-22 · TA获得超过903个赞
知道小有建树答主
回答量:239
采纳率:100%
帮助的人:125万
展开全部
需要用双缓冲,gdi+的双缓冲网上资料也不少,百度一下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-22
展开全部
利用双缓冲技术绘图,能很好解决闪屏问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式