EVC中bar图形绘制与双向缓冲实现

来源:互联网 发布:mac 命令行打开mysql 编辑:程序博客网 时间:2024/06/01 08:49

     兴趣所至,写了一个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) ;

 

原创粉丝点击