MSChart的简易使用

原创 2007年09月29日 13:46:00


一、在工程中加入mschart
菜单->Project->Add To Project->Components and Controls->ReGIStered ActiveX Controls->
    Microsoft Chart Control, version 6.0 (OLEDB)

二、在CDemoView中加入CMSChart m_Chart

三、创建及设置m_Chart

3.1 在OnCreate中创建CMSChart
// CDemoView::OnCreate()
    CRect rc;
    GetClientRect(&rc);
    if(!m_Chart.Create("mschart", WS_CHILD| WS_VISIBLE, rc, this, 10))
        return -1;

3.2 在OnSize中调整m_Chart的大小,使之能随窗口大小变化而变化
// CDemoView::OnSize
    if( m_Chart.GetSafeHwnd() )
        m_Chart.MoveWindow( 0, 0, cx, cy );   

3.3 设置m_Chart
void CDemoView::InitChart()
{
    // 设置标题
    m_Chart.SetTitleText("mschart 示例 by thinkry@263.net");

    // 下面两句改变背景色
    m_Chart.GetBackdrop().GetFill().SetStyle(1);
    m_Chart.GetBackdrop().GetFill().GetBrush().GetFillColor().Set(255, 255, 255);

    // 显示图例
    m_Chart.SetShowLegend(TRUE);
    m_Chart.SetColumn(1);
    m_Chart.SetColumnLabel((LPCTSTR)"1号机");
    m_Chart.SetColumn(2);
    m_Chart.SetColumnLabel((LPCTSTR)"2号机");
    m_Chart.SetColumn(3);
    m_Chart.SetColumnLabel((LPCTSTR)"3号机");

    // 栈模式
//    m_Chart.SetStacking(TRUE);

    // Y轴设置
    VARIANT var;
    m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetAuto(FALSE);    // 不自动标注Y轴刻度
    m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMaximum(100);    // Y轴最大刻度
    m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinimum(0);        // Y轴最小刻度
    m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMajorDivision(5);    // Y轴刻度5等分
    m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinorDivision(1);    // 每刻度一个刻度线
    m_Chart.GetPlot().GetAxis(1,var).GetAxisTitle().SetText("小时");    // Y轴名称

    // 3条曲线
    m_Chart.SetColumnCount(3);

    // 线色
    m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().GetVtColor().Set(0, 0, 255);
    m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().GetVtColor().Set(255, 0, 0);
    m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetPen().GetVtColor().Set(0, 255, 0);

    // 线宽(对点线图有效)
    m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetPen().SetWidth(50);
    m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetPen().SetWidth(100);
    m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetPen().SetWidth(2);

    // 数据点类型显示数据值的模式(对柱柱状图和点线图有效)
    // 0: 不显示    1: 显示在柱状图外
    // 2: 显示在柱状图内上方    3: 显示在柱状图内中间    4: 显示在柱状图内下方
    m_Chart.GetPlot().GetSeriesCollection().GetItem(1).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1);
    m_Chart.GetPlot().GetSeriesCollection().GetItem(2).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1);
    m_Chart.GetPlot().GetSeriesCollection().GetItem(3).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1);
}

3.4 设置数据
void CDemoView::DrawChart()
{
    int nRowCount = 6;
    m_Chart.SetRowCount(nRowCount);

    VARIANT var;
    m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetAuto(FALSE);            // 不自动标注X轴刻度
    m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetDivisionsPerlabel(1);// 每刻度一个标注
    m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetDivisionsPerTick(1); // 每刻度一个刻度线
    m_Chart.GetPlot().GetAxis(0,var).GetAxisTitle().SetText("日期");            // X轴名称

    char buf[32];
    srand( (unsigned)time( NULL ) );

    for(int row = 1; row <= nRowCount; ++row)
    {
        m_Chart.SetRow(row);
        sprintf(buf, "%d号", row);

        m_Chart.SetRowLabel((LPCTSTR)buf);
        m_Chart.GetDataGrid().SetData(row, 1, rand() * 100 / RAND_MAX, 0);
        m_Chart.GetDataGrid().SetData(row, 2, rand() * 100 / RAND_MAX, 0);
        m_Chart.GetDataGrid().SetData(row, 3, rand() * 100 / RAND_MAX, 0);
    }

    m_Chart.Refresh();   
}

3.5 改变显示类型

// 折线图
void CDemoView::OnChartLine()
{
    m_Chart.SetChartType(3);   
    DrawChart();
}

// 柱状图   
void CDemoView::OnChartCombi()
{
    m_Chart.SetChartType(1);   
    DrawChart();
}

// 饼状图
void CDemoView::OnChartPie()
{
    m_Chart.SetChartType(14);   
    DrawChart();
}

  

MFC画图的强大工具MSChart的使用

MFC画图的强大工具MSChart的使用 图表由于其直观明了的特性,在实际应用中十分很广泛。我们常常希望数据能通过图表来显示其特性。例如在Delphi和C++Builder编程中,我们可以很方便地实...
  • shaopengf
  • shaopengf
  • 2014年08月06日 12:42
  • 2252

Mschart 使用方法

vs2008需单独下载,VS2008集成了MSCHART    控件:Microsoft .NET Framework 3.5 的 Microsoft 图表控件(Microsof...
  • Metal1
  • Metal1
  • 2013年06月24日 16:09
  • 1190

MFC中MSChart的使用示例

转载:http://www.360doc.com/content/15/0119/21/7378868_442142515.shtml MFC中MSChart的使用示例   最近由于...
  • u010444671
  • u010444671
  • 2015年05月17日 10:07
  • 3306

MSChart的使用与部署

MSChart是微软的一个图表开发控件,可用于web及winform,这篇文章简介得很不错Mschart学习(MSchart介绍), 它需要安装MSChart.exe等,但部署到真实环境时有可能没有安...
  • gulijiang2008
  • gulijiang2008
  • 2011年07月26日 12:01
  • 2934

MSChart使用技巧总结

上一篇文章写了用dotnetCHARTING 制作柱形图,折线图和圆饼图 园友一直在推荐用微软的MSChart..于是,这几天工作之余研究了一下,其中也发现了不少问题.   首先当然需要下载MSCha...
  • yulongguiziyao
  • yulongguiziyao
  • 2013年10月03日 12:18
  • 3467

将MSChart ActiveX控件添加进VS2010项目

下载个MSCHART20.ocx,放进c:/windows/system32下载个控件注册工具,下载地址在VS2010项目中添加类CDMSChart类,项目- 添加类- 添加ActiveX控件的MFC...
  • qq361301276
  • qq361301276
  • 2011年02月11日 20:28
  • 10616

微软图形控件(Chart或MSchart)的用法

城市猎人 2010-05-06 11:57 微软图形控件(Chart或MSchart)的用法  急用!!! 求.NET4.0中Chart控件或3.5中MSChart控件的详细用法(关...
  • open2open2
  • open2open2
  • 2014年02月21日 11:10
  • 6029

在VC++ 2008中使用mschart控件

在win7与VC++2008里使用mschart控件
  • Challenge_C_PlusPlus
  • Challenge_C_PlusPlus
  • 2010年09月29日 14:59
  • 5315

vs2010中对mschart控件使用的一些心得

一 在页面中先添加一个chart控件,不用做什么设置,把自动生成的那个series删除掉,只设置其大小和ID就可以了,其它的在代码中进行设置. 二 所绑定的数据是根据所选条件的不同查询数据后进行动态...
  • wjbych
  • wjbych
  • 2011年08月12日 15:43
  • 1282

ASP.NET3.5下的MSChart图表控件使用

最近在做一个指标管理,有一个统计指标完成量的功能,偶然间发现了MSChart控件,下载下来试了试,发现很好用,可以做出非常漂亮的图表。可以设置的选项非常多,自带的Samples有很多漂亮的样式。赶紧用...
  • yanxiaodi
  • yanxiaodi
  • 2010年02月02日 11:32
  • 3801
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSChart的简易使用
举报原因:
原因补充:

(最多只允许输入30个字)