当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘图。
双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。
下面使用一个简单的例子来说明
不使用双缓冲技术代码:
void CMyStatic::Draw1(CPaintDC& dc)
{
RECT rect;
GetClientRect(&rect);
CBrush brush0(RGB(240,240,240));
dc.FillRect(&rect,&brush0);
RECT rt = rect;
UINT nFormat;
HFONT hFont = ::CreateFontIndirect(&m_LogFont);
HFONT hOldFont = (HFONT)::SelectObject(dc.m_hDC,hFont);
dc.SetBkMode(TRANSPARENT);
//name
nFormat = DT_SINGLELINE|DT_LEFT|DT_VCENTER|DT_END_ELLIPSIS;
dc.SetTextColor(m_dwNameColor);
rt.right = rt.left + m_nNameWidth;
rt.bottom = rt.top + m_nHeight;
dc.DrawText(m_sSignalName,&rt,nFormat);
//value
nFormat = DT_SINGLELINE|DT_LEFT|DT_VCENTER|DT_END_ELLIPSIS;
rt.left = rt.right;
rt.