由于项目的需要,试用了几个公司的图表控件,比如Dundas Chart,但是都觉得软件庞大,虽然功能也很强大,但是使用起来比较复杂,有很多功能实际用不上。后来试用了ChartFX,感觉不错,区区几行代码就可以Show出图表,以下是我写的一个例子:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using SoftwareFX.ChartFX.Lite;
namespace ChartTest
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private SoftwareFX.ChartFX.Lite.Chart chart1;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.CheckBox checkBox1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.chart1 = new SoftwareFX.ChartFX.Lite.Chart();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// chart1
//
this.chart1.Location = new System.Drawing.Point(8, 16);
this.chart1.Name = "chart1";
this.chart1.Size = new System.Drawing.Size(408, 208);
this.chart1.TabIndex = 0;
//
// comboBox1
//
this.comboBox1.Items.AddRange(new object[] {
"柱状图",
"饼图",
"折线图"});
this.comboBox1.Location = new System.Drawing.Point(48, 264);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(121, 20);
this.comboBox1.TabIndex = 1;
this.comboBox1.Text = "请选择";
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
//
// checkBox1
//
this.checkBox1.Location = new System.Drawing.Point(208, 264);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(72, 24);
this.checkBox1.TabIndex = 2;
this.checkBox1.Text = "3D效果";
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(480, 310);
this.Controls.Add(this.checkBox1);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.chart1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
chart1.OpenData(COD.Values, 2, 4);
chart1.Value[0, 0] = 100;
chart1.Value[1, 0] = 200;
chart1.Value[0, 1] = 300;
chart1.Value[1, 1] = 400;
chart1.Value[0, 2] = 500;
chart1.Value[1, 2] = 600;
chart1.Value[0, 3] = 700;
chart1.Value[1, 3] = 800;
chart1.CloseData(COD.Values);
chart1.Titles[0].Text = "业务统计图";
chart1.PointLabels = true;
chart1.SerLegBox = true;
chart1.SerLeg[0] = "业务 A";
chart1.SerLeg[1] = "业务 B";
}
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
if(comboBox1.SelectedIndex == 0)
chart1.Gallery = Gallery.Bar;
else if(comboBox1.SelectedIndex == 1)
chart1.Gallery = Gallery.Pie;
else if(comboBox1.SelectedIndex == 2)
chart1.Gallery = Gallery.Lines;
}
private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
{
if(checkBox1.Checked)
chart1.Chart3D = true;
else
chart1.Chart3D = false;
}
}
}
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using SoftwareFX.ChartFX.Lite;
namespace ChartTest
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private SoftwareFX.ChartFX.Lite.Chart chart1;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.CheckBox checkBox1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.chart1 = new SoftwareFX.ChartFX.Lite.Chart();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// chart1
//
this.chart1.Location = new System.Drawing.Point(8, 16);
this.chart1.Name = "chart1";
this.chart1.Size = new System.Drawing.Size(408, 208);
this.chart1.TabIndex = 0;
//
// comboBox1
//
this.comboBox1.Items.AddRange(new object[] {
"柱状图",
"饼图",
"折线图"});
this.comboBox1.Location = new System.Drawing.Point(48, 264);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(121, 20);
this.comboBox1.TabIndex = 1;
this.comboBox1.Text = "请选择";
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
//
// checkBox1
//
this.checkBox1.Location = new System.Drawing.Point(208, 264);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(72, 24);
this.checkBox1.TabIndex = 2;
this.checkBox1.Text = "3D效果";
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(480, 310);
this.Controls.Add(this.checkBox1);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.chart1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
chart1.OpenData(COD.Values, 2, 4);
chart1.Value[0, 0] = 100;
chart1.Value[1, 0] = 200;
chart1.Value[0, 1] = 300;
chart1.Value[1, 1] = 400;
chart1.Value[0, 2] = 500;
chart1.Value[1, 2] = 600;
chart1.Value[0, 3] = 700;
chart1.Value[1, 3] = 800;
chart1.CloseData(COD.Values);
chart1.Titles[0].Text = "业务统计图";
chart1.PointLabels = true;
chart1.SerLegBox = true;
chart1.SerLeg[0] = "业务 A";
chart1.SerLeg[1] = "业务 B";
}
private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
if(comboBox1.SelectedIndex == 0)
chart1.Gallery = Gallery.Bar;
else if(comboBox1.SelectedIndex == 1)
chart1.Gallery = Gallery.Pie;
else if(comboBox1.SelectedIndex == 2)
chart1.Gallery = Gallery.Lines;
}
private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
{
if(checkBox1.Checked)
chart1.Chart3D = true;
else
chart1.Chart3D = false;
}
}
}
运行效果如下图: