【MFC】关于 OnPaint 里面使用双缓冲绘图 依然不停闪烁
代码如下:
程序执行后窗口里面的背景图不停得闪烁,是因为以上代码的原因?还是因为这个OnPaint函数在一个死循环中?
void CdlgPlayerWnds::OnPaint()
{
CPaintDC dc(this);
RECT rect;
SetParent(CWnd::FromHandle(m_hwndOld));
GetParent()->GetClientRect(&rect);//获取窗口大小信息
CDC mdc,bufdc;
HBITMAP bmp;
mdc.CreateCompatibleDC(&dc);
bufdc.CreateCompatibleDC(&dc);
bmp=CreateCompatibleBitmap(dc.GetSafeHdc(),rect.right,rect.bottom);
mdc.SelectObject(&bmp);
m_hBmpNoVedio=(HBITMAP)LoadImage(NULL,"./res/nobmp.bmp",IMAGE_BITMAP,900,600,LR_LOADFROMFILE);//从文件导入位图
BITMAP bmInfo;
GetObject(m_hBmpNoVedio,sizeof(BITMAP),(LPBYTE)&bmInfo); //得到图片尺寸
bufdc.SelectObject(&m_hBmpNoVedio);
mdc.StretchBlt(0,0,rect.right,rect.bottom,&bufdc,0,0,bmInfo.bmWidth,bmInfo.bmHeight,SRCCOPY);
dc.BitBlt(0,0,rect.right,rect.bottom,&bufdc,0,0,SRCCOPY);
}程序执行后窗口里面的背景图不停得闪烁,是因为以上代码的原因?还是因为这个OnPaint函数在一个死循环中?
...全文
相关推荐
MFC双缓冲绘图源码
MFC利用双缓冲技术在IDC_STATIC上绘制图像
基于VS2010的MFC时钟绘制(双缓冲防闪烁)
本时钟是在vs2010中开发出来的,采用双缓冲技术防止画面闪烁,是学习MFC绘图技术的好典例。
MFC绘图双缓冲技术
为防止高速刷新造成的屏幕闪烁问题,可以使用双缓冲技术。本文介绍了为使用双缓冲需要添加的代码,可以直接使用。
解决MFC绘图过程中的闪烁
收集了大量通过双缓冲解决MFC绘图过程中的闪烁的文章。
引用 MFC GDI双缓冲避免图形闪烁
多数人认为MFC的绘图函数效率很低,总是想寻求其它的解决方案。MFC的绘图效率的确不高但也不差,而且它的绘图函数使用非常简单,只要使用方法得当,再加上一些技巧,用MFC可以得到效率很高的绘图程序。我想就我长期(呵呵当然也只有2年多)使用MFC绘图的经验谈谈我的一些观点。 1


界面
