一、先看看效果



二、工具介紹
1、簡介:圖表控件Microsoft Chart Controls for Microsoft .NET Framework 3.5,通過它,可讓您的項目及報表,輕松套用各種功能強大的 2D、3D、實時變化的動態圖表;且透過 AJAX,可讓圖表及里面的數據,每秒鍾都持續更新;使用者透過瀏覽器,可和圖表做各種互動設定。
2、dll下載:System.Windows.Forms.DataVisualization.dll


3、上圖樣例代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; namespace GCGL { public partial class frmChert : WeifenLuo.WinFormsUI.Docking.DockContent { private Series dataTable1Series = new Series("2020盈虧表"); Random rd = new Random(); public frmChert() { InitializeComponent(); } private void frmChert_Load(object sender, EventArgs e) { this.TabText = "統計圖表"; initData(); initStyle(); } public void initStyle() { //圖表框架及背景設置 chart2.BackGradientStyle = System.Windows.Forms.DataVisualization.Charting.GradientStyle.TopBottom; chart2.BackSecondaryColor = System.Drawing.Color.White; chart2.BorderlineColor = System.Drawing.Color.FromArgb(((int)(((byte)(26)))), ((int)(((byte)(59)))), ((int)(((byte)(105))))); chart2.BorderlineDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Solid; chart2.BorderlineWidth = 2; chart2.BorderSkin.SkinStyle = System.Windows.Forms.DataVisualization.Charting.BorderSkinStyle.Emboss; chart2.BackColor = Color.SteelBlue; chart2.Dock = DockStyle.Fill; //設置是否在 Chart 中顯示 坐標點值 dataTable1Series.IsValueShownAsLabel = true; dataTable1Series.Color = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(64)))), ((int)(((byte)(10))))); dataTable1Series.ShadowOffset = 1; dataTable1Series.YValuesPerPoint = 2; chart2.ChartAreas[0].AxisY.Maximum = 300.0;//設置Y軸最大值 chart2.ChartAreas[0].AxisY.Minimum = -100.0; //設置Y軸最小值 //chart2.Series[0].LegendText = "";//系列名字 chart2.Series[0].LegendToolTip = "Target Output";//鼠標放到系列上出現的文字 } public void initData() { DataTable dataTable1 = new System.Data.DataTable(); dataTable1.Columns.Add("日期", typeof(Int32)); dataTable1.Columns.Add("金額", typeof(double)); for (int i = 0; i < 11; i++) { dataTable1.Rows.Add((i+1), 1032.0*rd.Next()/10000000000); } chart2.Series.Clear();//清空表中的數據 //第一個表中的數據 dataTable1Series.Points.DataBind(dataTable1.AsEnumerable(), "日期", "金額", ""); dataTable1Series.XValueType = ChartValueType.Int32; //設置X軸類型為時間 dataTable1Series.ChartType = SeriesChartType.Pie; //設置Y軸為折線 chart2.Series.Add(dataTable1Series); } } }
4、常用屬性
chart1.Series[0].ChartType = SeriesChartType.Line;//設置曲線類型 chart1.Series[0].XValueType = ChartValueType.DateTime;//設置X軸綁定值的類型 chart1.Series[0].LegendToolTip = "Target Output";//鼠標放到系列上出現的文字 chart1.Series[0].LegendText = "Target Output";//系列名字 chart1.ChartAreas[0].AxisX.Minimum = 1;//坐標最小值,這樣的話,X軸坐標是從1開始 chart1.Series[0].IsValueShownAsLabel = true;//值作為標簽顯示在圖表中 chart1.Series[0].BorderWidth = 3;//設置線寬 chart1.ChartAreas[0].AxisX.Interval = 1;//設置X軸間距,這樣的話,就間距固定為1 double max = 120, min = 0; chart1.ChartAreas[0].AxisY.Maximum = max;//設置Y軸最大值 chart1.ChartAreas[0].AxisY.Minimum = min; //設置Y軸最小值
5、數據綁定:
private Series dataTable1Series = new Series("2020盈虧表"); public void initData() { DataTable dataTable1 = new System.Data.DataTable(); dataTable1.Columns.Add("日期", typeof(Int32)); dataTable1.Columns.Add("金額", typeof(double)); for (int i = 0; i < 11; i++) { dataTable1.Rows.Add((i+1), 1032.0*rd.Next()/10000000000); } chart2.Series.Clear();//清空表中的數據 //第一個表中的數據 dataTable1Series.Points.DataBind(dataTable1.AsEnumerable(), "日期", "金額", ""); dataTable1Series.XValueType = ChartValueType.Int32; //設置X軸類型為時間 dataTable1Series.ChartType = SeriesChartType.Pie; //設置Y軸為折線 chart2.Series.Add(dataTable1Series); }
