Hiya Chart是一个简单易用的.NET 免费绘图组件,支持C/S及B/S模式的折线图、柱状图及饼图的绘制。
组件支持SQL Server数据库、ACCESS、Excel及XML等格式的数据源,数据可通过该组件的Data类读取,然后赋予DataSource,也可直接给Y_Data(Y轴数组) 及 X_Data(X轴数组)属性直接赋值绘制图形。绘制折线图时,如果通过DataSource赋值,系统将自动按每列数据(字符类型字段除外)绘制一条折线,多列数据则绘制多条折线,理论上可以同时绘制不限数量的折线图,并以不同颜色显示;绘制柱状图时,如果通过DataSource赋值并且非字符类型字段多于两列,系统将自动对各列进行求和统计,然后将结果绘制出来;绘制饼图时,如果通过DataSource赋值且非字符类型字段多于两列,系统只绘制第一个非字符类型列。
无论是C/S或 B/S模式,使用时都必须先添加引用 Chart.dll 文件。下面就C/S及B/S这两种模式的使用作简要说明。
1、C/S模式
先添加一个Form,在Form上面添加一个pictureBox 和一个 button,在button的单击事件输入如下代码:
string sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"/test.mdb;";
string sql = "SELECT value FROM 表";
DataTable dt = Chart.Data.GetDataFromDatabase(sql, sConn);
Chart.BarChart bar = new Chart.BarChart();
bar.DataSource = dt;
//bar.ShowAllGrid = true;
bar.GradientAngle = 30f;
bar.Title = "Title";
bar.SubTitle = "SubTitle";
bar.Width = this.pictureBox1.Width;
bar.Height = this.pictureBox1.Height;
this.pictureBox1.Image = (Image)bar.GetBitmap();
这样,单击button后,就会绘制出一个柱状图(见图1)。
图1 Hiya Chart绘制的柱状图
2、B/S模式
对于B/S模式,建议使用两个网页进行控制,前台网页(Default.aspx)添加一个Image、一个button, ,在button的单击事件输入如下代码:
this.Image1.ImageUrl = "chart.aspx ";
后台网页(chart.aspx)的Page_Load事件添加代码:
DataTable dt = Chart.Data.GetDataFromExcel(Server.MapPath("book1.xls"));
Chart.LineChart line = new Chart.LineChart();
line.DataSource = dt;
line.ShowXAxisMainGrid = true;
line.ShowYAxisMainGrid = true;
line.Title = "Title";
line.SubTitle = "SubTitle";
line.Width = 600;
line.Height = 480;
line.IsDateTimeScale = true;
line.MinDateTimeUnit = Chart.DateTimeUnit.Day;
Bitmap bmp = line.GetBitmap();
ImageFormat imageFormat = ImageFormat.Png;
System.IO.MemoryStream MemStream = new System.IO.MemoryStream();
Response.ContentType = "image/png";
bmp.Save(MemStream, imageFormat);
MemStream.WriteTo(Response.OutputStream);
bmp.Dispose();
这样,单击button后,就会绘制出一个折线图(见图2)。
图2 Hiya Chart绘制的折线图
类似地,组件可以绘制饼图,参考代码如下:
string sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("test.mdb");
string sql = "SELECT value FROM 表1";
DataTable dt = Chart.Data.GetDataFromDatabase(sql, sConn);
Chart.PieChart pie = new Chart.PieChart();
pie.DataSource = dt;
pie.Title = "Title";
pie.SubTitle = "SubTitle";
pie.Width = 600;
pie.Height = 480;
Bitmap bmp = pie.GetBitmap();
mageFormat imageFormat = ImageFormat.Png;
System.IO.MemoryStream MemStream = new System.IO.MemoryStream();
Response.ContentType = "image/png";
bmp.Save(MemStream, imageFormat);
MemStream.WriteTo(Response.OutputStream);
bmp.Dispose();
组件及示例程序下载:马上下载