兴趣所至,写了一个bar图形。但是在调试的过程当中出现闪屏等问题。经过一帆研究,最总利用双向缓冲解决了这个问题。如下代码已经注释!
/*author:wboy
date:June 2, 2009
purpose:try to write the bar programme with CBar.h */
//双向缓冲代码
PAINTSTRUCT ps;
CDC *pDC = BeginPaint(&ps) ;
HBITMAP hBm = CreateCompatibleBitmap(pDC->m_hDC,240,280); //创建虚拟位图
HDC hdc1 = CreateCompatibleDC(pDC->m_hDC); //创建和hdc兼容的设备
SelectObject(hdc1,hBm); //选择虚拟画布
//设置参数
CBar *bar=new CBar();
bar->SetYMin(25); //设置Y轴的最小坐标
bar->SetYMax(100); //设置X轴的最小坐标
CString xn="Abscissa";
bar->SetXName(xn); //Y轴标题
bar->SetYName(_T("Ordinate")); //X轴标题
bar->SetTitle(_T("Five figures")); //图形标题
bar->SetLegend(_T("Jan"),35,RGB(255,0,0));
bar->SetLegend(_T("Feb"),55,RGB(255,255,0));
bar->SetLegend(_T("Mar"),100,RGB(0,255,0));
bar->SetLegend(_T("April"),60,RGB(0,255,255));
bar->SetLegend(_T("May"),60,RGB(0,0,255)); //设置标题栏和数据
//开始绘图
//CDC *pDC=GetDC();
bar->DrawBar(pDC,0,0,240,280);
delete bar;
//bar->Set3DBar(TRUE);//设置3d效果
bar->Set3DBar(FALSE);//设置2d效果
bar->SetWithDash(FALSE);
DeleteObject(hBm);
EndPaint (&ps) ;