[VC] 在VC++中使用MSChart表格控件(小結)(轉載)

SChart,微軟的一個很不錯的畫圖控件,以下轉載自:http://blog.tom.com/easehaibo/article/1374.html

 

1. 在工程中添加MSChart控件
Project—〉Add to Project—〉Registered ActiveX Controls,選中Microsoft Chart Control 6.0(SP4)(OLEDB)
點擊Insert,一路確定
2.         在用到控件的地方加上相應的頭文件,mschart.h,還有其他比較常用的頭文件:(重要!上面兩個例子沒有提到,可能都是在視窗中使用,在對話框應用中需要添加)
#include "VcPlot.h"
#include "VcAxis.h"
#include "VcValueScale.h"
#include "VcSeriesCollection.h"
#include "VcSeries.h"
#include "VcPen.h"
#include "VcCategoryScale.h"
#include "VcColor.h"
#include "VcDataGrid.h"
#include "VcBackdrop.h"
#include "VcFill.h"
#include "VcBrush.h"
#include "VcDataPoints.h"
#include "VcDataPoint.h"
#include "VcDataPointLabel.h"
#include "VcAxisTitle.h"
#include "VcAxisScale.h"
#include "VcAxisGrid.h"
3.         定義並create控件對象
CMSChart m_Chart;
m_Chart.Create("mschart", WS_CHILD| WS_VISIBLE, rc, this, 10);// this 爲窗口指針
4.         設置控件的屬性
//設置標題
       m_Chart.SetTitleText(Title);//Title 爲CString類型
//設置棧模式
       m_Chart.SetStacking(FALSE);
//設置行數及列數
m_Chart.SetRowCount(iRowCount);//iRowCount和iColumnCount爲int型
m_Chart.SetColumnCount(iColummCount);
//設置控件的數據,int型的iRow,iColumn可看成是數據所在的行和列,Data即是所要設的數值型數據
       m_Chart.GetDataGrid().SetData(iRow, iColumn, Data, 0);
//設置圖例
       m_Chart.SetShowLegend(TRUE);//顯示圖例
       m_Chart.SetColumn(iColumn);
       m_Chart.SetColumnLabel(slegend);//slegend爲CString型
//設置x軸下方顯示的標記
       m_Chart.SetRow(iRow);
       m_Chart.SetRowLabel(sLabel);//sLabel爲CString型
//設置x軸及y軸的標題。xTitle和yTitle爲CString型
       m_Chart.GetPlot().GetAxis(0,var).GetAxisTitle().SetText(xTitle); //x軸
       m_Chart.GetPlot().GetAxis(1,var).GetAxisTitle().SetText(yTitle); //y軸
//設置控件類型
       m_Chart.SetChartType(3);//3:曲線型;1:條形;14:餅圖
//設置背景顏色
       m_Chart.GetBackdrop().GetFill().SetStyle(1);
       m_Chart.GetBackdrop().GetFill().GetBrush().GetFillColor().Set(255, 255, 255);
//設置數據系列的顏色:如果是曲線圖則對應每條曲線的顏色
       for (int i = 1; i <= m_Chart.GetColumnCount(); i++ )
       {//這裏設置爲隨機顏色
              m_Chart.GetPlot().GetSeriesCollection().GetItem(i).GetPen().GetVtColor().Set(rand() * 230 / RAND_MAX, rand() * 230 / RAND_MAX, rand() * 230 / RAND_MAX);
              m_Chart.GetPlot().GetSeriesCollection().GetItem(i).GetDataPoints().GetItem(-1).GetDataPointLabel().SetLocationType(1);
       }
//設置x軸的其他屬性
       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); // 每刻度一個刻度線
//自動標註y軸
       m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetAuto(TRUE);
在這裏,也可以手動設置y軸,如下:
m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMaximum(100);     // y軸最大刻度爲100
m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinimum(0);         // y軸最小刻度爲0
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("YourTitle");     // y的軸名稱

//不要與x軸垂直的表格線
       m_Chart.GetPlot().GetAxis(0,var).GetAxisGrid().GetMajorPen().SetStyle(0);// no x grids
//隱藏第二y軸,即右邊的y軸
       m_Chart.GetPlot().GetAxis(2,var).GetAxisScale().SetHide(TRUE);
//刷新控件
       m_Chart.Refresh();
發佈了14 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章