最近在工作中,使用到了MFC绘图的部分。当楼主再次作图时,结果当然是显示窗口不断地闪烁着,非常影响用户的视觉。还记得以前楼主也采用过双缓冲对贴图方面进行过编程,闪烁的问题虽然解决掉了,但是具体是怎么解决的,楼主已记不清楚了。而且现在涉及到很多张照片进行实时变化,即使利用InvalidateRect函数来减少闪烁的区域,一旦这种情况积少成多,也会变成一团糟的画面。
因此,与其侥幸减少闪烁的次数,还不如彻底解决掉问题的根源,一劳永逸。
采用双缓冲技术:
void CXXX::OnPaint()
{
CPaintDC dc(this);
CRect rect;
this->GetClientRect(&rectt);
//创建内存DC以及内存画布
CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(&dc,rec.Width(),rect.Height());
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(0,0,0));
//画线1
CPen cPen1(PS_DASH,1,RGB(255,