图表动态创建。 在.net,c#

有没有人在.NET使用图表的经验? 特别是我想以编程方式创建它们。

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; using System.Diagnostics; namespace WindowsFormsApplication6 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Random rnd = new Random(); Chart mych = new Chart(); mych.Series.Add("duck"); mych.Series["duck"].SetDefault(true); mych.Series["duck"].Enabled = true; mych.Visible = true; for (int q = 0; q < 10; q++) { int first = rnd.Next(0,10); int second = rnd.Next(0,10); mych.Series["duck"].Points.AddXY(first, second); Debug.WriteLine(first + " " + second); } mych.Show(); Controls.Add(mych); mych.Show(); } } } 

我正在尝试使用.NET (.net 4, Visual Studio 2010) 图表 ,但随机生成的数据集不会出现。 该图表仍为空白。 我搜索了一些例子,只找到了这样的例子,是的,手动“拖动”方法是有效的。 我不知道为什么我编程生成的数据没有出现。

是的。

 // FakeChart.cs // ------------------------------------------------------------------ // // A Winforms app that produces a contrived chart using // DataVisualization (MSChart). Requires .net 4.0. // // Author: Dino // // ------------------------------------------------------------------ // // compile: \net4.0\csc.exe /t:winexe /debug+ /R:\net4.0\System.Windows.Forms.DataVisualization.dll FakeChart.cs // using System; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; namespace Dino.Tools.WebMonitor { public class FakeChartForm1 : Form { private System.ComponentModel.IContainer components = null; System.Windows.Forms.DataVisualization.Charting.Chart chart1; public FakeChartForm1 () { InitializeComponent(); } private double f(int i) { var f1 = 59894 - (8128 * i) + (262 * i * i) - (1.6 * i * i * i); return f1; } private void Form1_Load(object sender, EventArgs e) { chart1.Series.Clear(); var series1 = new System.Windows.Forms.DataVisualization.Charting.Series { Name = "Series1", Color = System.Drawing.Color.Green, IsVisibleInLegend = false, IsXValueIndexed = true, ChartType = SeriesChartType.Line }; this.chart1.Series.Add(series1); for (int i=0; i < 100; i++) { series1.Points.AddXY(i, f(i)); } chart1.Invalidate(); } protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); this.chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart(); ((System.ComponentModel.ISupportInitialize)(this.chart1)).BeginInit(); this.SuspendLayout(); // // chart1 // chartArea1.Name = "ChartArea1"; this.chart1.ChartAreas.Add(chartArea1); this.chart1.Dock = System.Windows.Forms.DockStyle.Fill; legend1.Name = "Legend1"; this.chart1.Legends.Add(legend1); this.chart1.Location = new System.Drawing.Point(0, 50); this.chart1.Name = "chart1"; // this.chart1.Size = new System.Drawing.Size(284, 212); this.chart1.TabIndex = 0; this.chart1.Text = "chart1"; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(284, 262); this.Controls.Add(this.chart1); this.Name = "Form1"; this.Text = "FakeChart"; this.Load += new System.EventHandler(this.Form1_Load); ((System.ComponentModel.ISupportInitialize)(this.chart1)).EndInit(); this.ResumeLayout(false); } ///  /// The main entry point for the application. ///  [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FakeChartForm1()); } } } 

用户界面:

在此处输入图像描述

微软有一个很好的图表控件。 在这里下载。 这里有很棒的video。 示例代码在这里 。 快乐的编码!

添加对System.Windows.Form.DataVisualization的引用,然后添加适当的using语句:

 using System.Windows.Forms.DataVisualization.Charting; private void CreateChart() { var series = new Series("Finance"); // Frist parameter is X-Axis and Second is Collection of Y- Axis series.Points.DataBindXY(new[] { 2001, 2002, 2003, 2004 }, new[] { 100, 200, 90, 150 }); chart1.Series.Add(series); } 

mych.Visible = true;之后,尝试在代码中包含这些行mych.Visible = true;

 ChartArea chA = new ChartArea(); mych.ChartAreas.Add(chA); 

您需要将Form1_Load处理程序附加到Load事件:

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; using System.Diagnostics; namespace WindowsFormsApplication6 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Load += Form1_Load; } private void Form1_Load(object sender, EventArgs e) { Random rnd = new Random(); Chart mych = new Chart(); mych.Height = 100; mych.Width = 100; mych.BackColor = SystemColors.Highlight; mych.Series.Add("duck"); mych.Series["duck"].SetDefault(true); mych.Series["duck"].Enabled = true; mych.Visible = true; for (int q = 0; q < 10; q++) { int first = rnd.Next(0, 10); int second = rnd.Next(0, 10); mych.Series["duck"].Points.AddXY(first, second); Debug.WriteLine(first + " " + second); } Controls.Add(mych); } } }