轉自:http://www.cnblogs.com/Holmes-Jin/archive/2012/03/05/2380776.html
介紹MSChart的常用屬性和事件
MSChart的元素組成
最常用的屬性包括
ChartAreas:增加多個繪圖區域,每個繪圖區域包含獨立的圖表組、數據源,用於多個圖表類型在一個繪圖區不兼容時。
AlignmentOrientation:圖表區對齊方向,定義兩個繪圖區域間的對齊方式。
AlignmentStyle:圖表區對齊類型,定義圖表間用以對其的元素。
AlignWithChartArea:參照對齊的繪圖區名稱。
InnerPlotPosition:圖表在繪圖區內的位置屬性。
Auto:是否自動對齊。
Height:圖表在繪圖區內的高度(百分比,取值在0-100)
Width:圖表在繪圖區內的寬度(百分比,取值在0-100)
X,Y:圖表在繪圖區內左上角坐標
Position:繪圖區位置屬性,同InnerPlotPosition。
Name:繪圖區名稱。
Axis:坐標軸集合
Title:坐標軸標題
TitleAlignment:坐標軸標題對齊方式
Interval:軸刻度間隔大小
IntervalOffset:軸刻度偏移量大小
MinorGrid:次要輔助線
MinorTickMark:次要刻度線
MajorGrid:主要輔助線
MajorTickMark:主要刻度線
DataSourceID:MSChart的數據源。
Legends:圖例說明。
Palette:圖表外觀定義。
Series:最重要的屬性,圖表集合,就是最終看到的餅圖、柱狀圖、線圖、點圖等構成的集合;可以將多種相互兼容的類型放在一個繪圖區域內,形成復合圖。
IsValueShownAsLabel:是否顯示數據點標簽,如果為true,在圖表中顯示每一個數據值
Label:數據點標簽文本
LabelFormat:數據點標簽文本格式
LabelAngle:標簽字體角度
Name:圖表名稱
Points:數據點集合
XValueType:橫坐標軸類型
YValueType:縱坐標軸類型
XValueMember:橫坐標綁定的數據源(如果數據源為Table,則填寫橫坐標要顯示的字段名稱)
YValueMembers:縱坐標綁定的數據源(如果數據源為Table,則填寫縱坐標要顯示的字段名稱,縱坐標可以有兩個)
ChartArea:圖表所屬的繪圖區域名稱
ChartType:圖表類型(柱形、餅形、線形、點形等)
Legend:圖表使用的圖例名稱
Titles:標題集合。
width:MSChart的寬度。
height:MSChart的高度。
常用事件:
Series1.Points.DataBind()
綁定數據點集合,如果要在一個MSChart控件的一個繪圖區(ChartArea)內添加多個不同數據源的圖表,就用這個主動綁定數據集合的方法。可以將表中指定字段的值綁定到指定的坐標軸上。
MSChart1.DataBind()
給整個MSChart綁定一個數據源,該MSChart中的圖表全部可以使用該數據源作為統計來源。
下面給一個自己做的例子:
- int[] date = new int[] { 20, 40, 50, 80, 30, 10, 60 };
- int[] test = new int[] { 10, 80, 70, 40, 20, 50,90};
- Chart1.Width = 600; //圖片寬度
- Chart1.Height = 400; //圖片高度
- Chart1.BackColor = Color.Azure; //圖片背景色
- //建一個圖表集合
- Series series = new Series("test");
- series.ChartType = SeriesChartType.Column; //圖標集類型,Line為直線,SpLine為曲線
- series.Color = Color.Green; //線條顏色
- series.BorderWidth = 2; //線條寬度
- series.ShadowOffset = 1; //陰影寬度
- series.IsVisibleInLegend =false; //是否顯示數據說明
- series.IsValueShownAsLabel = true;
- series.MarkerStyle = MarkerStyle.Diamond; //線條上的數據點標志類型
- series.MarkerSize = 8; // 標志的大小
- DateTime date1 = DateTime.Now.Date;
- for (int i = 0; i < date.Length; i++)
- {
- series.Points.AddXY(date1, date[i]);
- date1 = date1.AddDays(1);
- }
- Chart1.Series.Add(series); //把數據集添加到Chart1中
- //再建一個圖表集合
- Series series1 = new Series("ok");
- series1.ChartType = SeriesChartType.Column; //圖標集類型,Line為直線,SpLine為曲線
- series1.Color = Color.Red; //線條顏色
- series1.BorderWidth = 2; //線條寬度
- series1.ShadowOffset = 1; //陰影寬度
- series1.IsVisibleInLegend = false; //是否顯示數據說明
- series1.IsValueShownAsLabel = true;
- series1.MarkerStyle = MarkerStyle.Diamond;
- series1.MarkerSize = 8;
- DateTime date2 = DateTime.Now.Date;
- for (int i = 0; i < test.Length; i++)
- {
- series1.Points.AddXY(date2, test[i]);
- date2 = date2.AddDays(1);
- }
- Chart1.Series.Add(series1); //把數據集添加到Chart1中
- //設置坐標軸
- Chart1.ChartAreas[0].AxisX.LineColor = Color.Blue;
- Chart1.ChartAreas[0].AxisY.LineColor = Color.Blue;
- Chart1.ChartAreas[0].AxisX.LineWidth = 2;
- Chart1.ChartAreas[0].AxisY.LineWidth = 2;
- Chart1.ChartAreas[0].AxisY.Title = "總額";
- //設置網格線
- Chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Blue;
- Chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Blue;
最后顯示的圖片:

數據源綁定(一),具體代碼如下:
- protected void Page_Load(object sender, EventArgs e)
- {
- string fileName = Server.MapPath(".");
- fileName += "//App_Data//chartdata.mdb";
- Chart1.Width = 600; //圖表寬度
- Chart1.Height = 400; //圖表高度
- Chart1.BackColor = Color.Azure; //圖表背景色
- Chart1.Titles.Add("房地產"); //圖表標題
- //新建連接
- using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName))
- {
- OleDbCommand cmd = new OleDbCommand("SELECT Name, Sales FROM REPS", con);
- con.Open();
- OleDbDataReader read = cmd.ExecuteReader();
- Chart1.DataBindTable(read, "Name");
- read.Close();
- }
- //注意數據綁定后,它的series是1而不是0
- Chart1.Series[1].IsValueShownAsLabel = true; //是否顯示數據
- Chart1.Series[1].IsVisibleInLegend = false; //是否顯示數據說明
- Chart1.Series[1].MarkerStyle = MarkerStyle.Circle; //線條上的數據點標志類型
- Chart1.Series[1].MarkerSize = 8; //標志大小
- Chart1.ChartAreas[0].AxisX.LineColor = Color.Blue; //X軸顏色
- Chart1.ChartAreas[0].AxisY.LineColor = Color.Blue; //Y軸顏色
- Chart1.ChartAreas[0].AxisX.LineWidth = 2; //X軸寬度
- Chart1.ChartAreas[0].AxisY.LineWidth = 2; //Y軸寬度
- Chart1.ChartAreas[0].AxisY.Title = "價格"; //Y軸標題
- }
效果圖如下:

數據源綁定方式(二)
- protected void Page_Load(object sender, EventArgs e)
- {
- string fileName = Server.MapPath(".");
- fileName += "//App_Data//chartdata.mdb";
- Chart1.Width = 600; //圖表寬度
- Chart1.Height = 400; //圖表高度
- Chart1.BackColor = Color.Azure; //圖表背景色
- Chart1.Titles.Add("房地產"); //圖表標題
- //新建連接
- using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName))
- {
- OleDbCommand cmd = new OleDbCommand("SELECT Name, Sales FROM REPS", con);
- con.Open();
- //OleDbDataReader read = cmd.ExecuteReader();
- //Chart1.DataBindTable(read, "Name");
- //read.Close();
- Chart1.DataSource = cmd;
- Chart1.Series[0].XValueMember = "Name";
- Chart1.Series[0].YValueMembers = "Sales";
- con.Close();
- Chart1.DataBind();
- }
- }
效果圖如下:

數據源綁定(三):
- protected void Page_Load(object sender, EventArgs e)
- {
- string fileName = Server.MapPath(".");
- fileName += "//App_Data//chartdata.mdb";
- Chart1.Width = 600; //圖表寬度
- Chart1.Height = 400; //圖表高度
- Chart1.BackColor = Color.Azure; //圖表背景色
- Chart1.Titles.Add("房地產"); //圖表標題
- //新建連接
- using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName))
- {
- OleDbCommand cmd = new OleDbCommand("SELECT GrossSales FROM SALES WHERE QuarterEnding < #01/01/2002#", con);
- con.Open();
- OleDbDataReader read = cmd.ExecuteReader();
- Chart1.Series[0].Points.DataBindY(read, "GrossSales");
- read.Close();
- }
- }
效果圖如下:

數據源綁定(四):
- protected void Page_Load(object sender, EventArgs e)
- {
- string fileName = Server.MapPath(".");
- fileName += "//App_Data//chartdata.mdb";
- Chart1.Width = 600; //圖表寬度
- Chart1.Height = 400; //圖表高度
- Chart1.BackColor = Color.Azure; //圖表背景色
- Chart1.Titles.Add("房地產"); //圖表標題
- //新建連接
- using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+fileName))
- {
- OleDbCommand cmd = new OleDbCommand("SELECT * FROM REPSALES", con);
- con.Open();
- OleDbDataReader read = cmd.ExecuteReader();
- Chart1.DataBindCrossTable(read,
- "Name",
- "Year",
- "Sales",
- "Label=Commissions{C}");
- read.Close();
- }
- // Chart1.Legends.Add("Name");
- }
效果圖如下:(有點不理想,Legend中出現了Series1,關於legend的設置還有待研究)

數據源綁定(四)——行綁定
- protected void Page_Load(object sender, EventArgs e)
- {
- string fileName = Server.MapPath(".");
- fileName += "//App_Data//chartdata.mdb";
- Chart1.Width = 600; //圖表寬度
- Chart1.Height = 400; //圖表高度
- Chart1.BackColor = Color.Azure; //圖表背景色
- Chart1.Titles.Add("Bind By Rows"); //圖表標題
- using (OleDbConnection con=new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName))
- {
- OleDbCommand cmd = new OleDbCommand("SELECT * FROM SALESCOUNTS", con);
- OleDbDataAdapter oda = new OleDbDataAdapter();
- oda.SelectCommand = cmd;
- DataSet ds = new DataSet();
- oda.Fill(ds);
- foreach (DataRow row in ds.Tables[0].Rows)
- {
- string seriesName=row["SalesRep"].ToString();
- Chart1.Series.Add(seriesName);
- Chart1.Series[seriesName].ChartType = SeriesChartType.Line;
- Chart1.Series[seriesName].BorderWidth = 2;
- for (int col = 1; col < ds.Tables[0].Columns.Count; col++)
- {
- string colName = ds.Tables[0].Columns[col].ColumnName;
- int yVal = Convert.ToInt32(row[colName].ToString());
- Chart1.Series[seriesName].Points.AddXY(colName, yVal);
- }
- }
- }
- }
效果圖如下:

數據源綁定(五)
- protected void Page_Load(object sender, EventArgs e)
- {
- // Initialize arrays for series 1
- double[] yval1 = { 2, 6, 5 };
- string[] xval1 = { "Peter", "Andrew", "Julie" };
- // Initialize arrays for series 2
- double[] yval2 = { 4, 5, 3 };
- string[] xval2 = { "Peter", "Andrew", "Dave" };
- // Initialize arrays for series 3
- double[] yval3 = { 6, 5 };
- string[] xval3 = { "Julie", "Mary" };
- // Bind the arrays to each data series
- Chart1.Series["Series1"].Points.DataBindXY(xval1, yval1);
- Chart1.Series["Series2"].Points.DataBindXY(xval2, yval2);
- Chart1.Series["Series3"].Points.DataBindXY(xval3, yval3);
- // Align series using their X axis labels
- Chart1.AlignDataPointsByAxisLabel();
- Chart1.ChartAreas[0].Area3DStyle.Enable3D = true; //展示3D
- }
效果圖如下:

