CBarChart柱形图类

在用VC做有关图表的时候,感觉不是那么方便,在codeproject找到一个柱形图的实用类,原文地址为:http://www.codeproject.com/KB/miscctrl/CBarChart.aspx。它可以很快速的生成柱状图,并且支持输出位图、支持打印、支持从数据库导入。

原文章的类为多字节的,我自己改为了可适应多字节和Unicode版本的,如果有错的话,还请使用原文章所给出的源码。下面介绍下基本步骤:
1.添加BarChart.cpp BarChart.h工程;
2.在需要使用的地方添加头文件

#include  "BarChart.h"

3.定义一个CBarChart的变量;
4.在实现文件里面使用Create方法创建图表柱形图;

例如以下代码可以在对话框的初始化函数里面添加:

BOOL CBar_TestDlg::OnInitDialog() 

    CDialog::OnInitDialog(); 
 
         //````````````````````` 
 
     // TODO: 在此添加额外的初始化代码 
    CRect rcClient; 
    GetClientRect(&rcClient); 
 
     if (!m_chart.Create(CRect( 2020, rcClient.Width()- 20, rcClient.Height()- 20),  this1050 )) 
    { 
         if (!m_chart.GetSafeHwnd()) 
        { 
            AfxMessageBox(_T( "不能创建图表控件!")); 
             return FALSE; 
        } 
 
        m_chart.Reset(); 
        m_chart.SetAutoScale(FALSE); 
    } 
 
    m_chart.SetTitle(_T( "一个测试图,显示一些虚拟数据")); 
    m_chart.SetBKColor(RGB( 255255240)); 
    m_chart.ShowTooltip(TRUE); 
 
    m_chart.AddBar( 1600. 356,_T( "一月"),RGB( 255, 255, 0)); 
    m_chart.AddBar( 2841. 5468,_T( "二月"), RGB( 255, 0, 0)); 
    m_chart.AddBar( 1045. 3258,_T( "三月"), RGB( 100, 100, 200)); 
    m_chart.AddBar( 1502. 215,_T( "四月"), RGB( 0, 255, 0)); 
    m_chart.AddBar( 1467,_T( "五月"), RGB( 255, 255, 255)); 
    m_chart.AddBar( 1678. 354,_T( "六月"), RGB( 200, 255, 255)); 
    m_chart.AddBar( 1785. 689,_T( "七月"), RGB( 255, 240, 40)); 
    m_chart.AddBar( 1283. 099,_T( "八月"), RGB( 255, 60, 130)); 
    m_chart.AddBar( 1554. 879,_T( "九月"), RGB( 255, 255, 200)); 
    m_chart.AddBar( 1400. 10,_T( "十月"), RGB( 130, 235, 250)); 
    m_chart.AddBar( 1600. 556,_T( "十一月"),RGB( 100, 150, 200)); 
    m_chart.AddBar( 1900. 3546,_T( "十二月"), RGB( 150, 240, 80), TRUE); 
 
     return TRUE;   // 除非将焦点设置到控件,否则返回 TRUE 
}

效果如下所示:

对于的一些控制函数,参看原文或者源代码。下载地址:http://download.youkuaiyun.com/source/2532159

 2012年4月18日 多字节下乱码问题
修改如下:
void CBarChart::CChartBar::CreateLabelFont()里面m_lf.lfCharSet = ARABIC_CHARSET;改为m_lf.lfCharSet = GB2312_CHARSET;
BOOL CChartTip::Create(CWnd *pParentWnd, BOOL *pbEnable, CString* lpszTitle, int nDelay)里面lf.lfCharSet = ARABIC_CHARSET;改为lf.lfCharSet = GB2312_CHARSET;

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值