您的位置:首页 > 编程语言 > C#

C#利用ZedDemo组件生成数据报表

2012-06-27 21:42 483 查看
ZedGraph

ZedGraph官方对ZedGraph的解释是:ZedGraph是一个针对用c#编官吏的类库,在WinForm下和ASP.NET都有对应的控件,它可以绘制出OWC中所能支持的图表类型,如2D或者3D的饼图、柱状图等。尽管它提供了许多详尽的属性以供实现灵活的控件,但是使用默认的设置就能很简单地绘制出多种类型的图表。官网:http://www.zedgraph.org

ZedGraph控件常用属性

OutputFormat:设置图表的导出格式,如jpg或者png,默认是导出成png格式图片
RenderedImagePath:设置图表的导出后的保存路径,默认是~/ZedGraphImages/
RenderMode:设置图表的如何在网面中显示,它有两个值:ImageTag值表示在网页中以<img>标签来显示,RawImage值表示在网面中直直接显示,默认值是ImageTag
Height:设置高度
Width:设置宽度

具体实例:

需下载并添加ZedGraph.dll和ZedGraph.Web.dll

ZedDemo.aspx  //显示效果页面

<table>
<tr>
<td>
柱状图:<br />
<img src="ZedGraph_Other.aspx?type=Bar" />
</td>
<td>
折线图:<br />
<img src="ZedGraph_Other.aspx?type=Curve" />
</td>
</tr>
<tr>
<td>
线形图:<br />
<img src="ZedGraph_Other.aspx?type=Stick" />
</td>
<td>
饼图:<br />
<img src="ZedGraph_Pie.aspx" />
</td>
</tr>
</table>

ZedGraph_Other.aspx页面  //生成除饼图以外的其它类型

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ZedGraph_Other.aspx.cs" Inherits="ZedGraph_Other" %>

<%@ Register Assembly="ZedGraph.Web" Namespace="ZedGraph.Web" TagPrefix="cc1" %>
<cc1:ZedGraphWeb ID="ZedGraphWeb1" runat="server" Width="500" Height="375" RenderMode="RawImage">
</cc1:ZedGraphWeb>


ZedGraph_Other.aspx.cs页面  //生成除饼图以外的其它类型

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ZedGraph;
using ZedGraph.Web;
using System.Drawing;

public partial class ZedGraph_Other : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}

private void InitializeComponent()
{
ZedGraphWeb1.RenderGraph += new ZedGraphWebControlEventHandler(zedgraph_Pie_RenderGraph);
}
/// <summary>
/// 绘制报表
/// </summary>
/// <param name="webObject"></param>
/// <param name="g"></param>
/// <param name="pane"></param>
void zedgraph_Pie_RenderGraph(ZedGraphWeb webObject, Graphics g, MasterPane pane)
{
GraphPane myPane = pane[0];
myPane.Chart.Fill = new Fill(Color.LightYellow);
//设置报表标题
myPane.Title.Text = "网站访问统计";
//设置报表X轴标题
myPane.XAxis.Title = new AxisLabel("月份", "宋体", 24, Color.Green, true, false, false);
//设置报表Y轴标题
myPane.YAxis.Title = new AxisLabel("IP", "宋体", 24, Color.Green, true, false, false);

//定义在X轴要显示的分类
string[] labels = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" };
//设置X轴的显示分类内容
myPane.XAxis.Scale.TextLabels = labels;
//设置X轴分类显示方式为text
myPane.XAxis.Type = AxisType.Text;

//分别为两个用户创建值
PointPairList pointList1 = new PointPairList();
PointPairList pointList2 = new PointPairList();
Random random = new Random();
for (int i = 1; i < 13; i++)
{
int x = i;
int y1 = random.Next(3000) + 500;
int y2 = random.Next(5000) + 1000;
pointList1.Add(x, y1);
pointList2.Add(x, y2);
}

//显示方式-------------------------------------------------------------------------------------
//在此myPane后面的方法决定了显示什么报表类型,如下格式:
//myPane.AddCurve("匿名用户", pointList1, Color.Red);
//myPane.AddCurve("会员用户", pointList2, Color.Blue);
//根据不同的参数显示不同的类型
if (Request.QueryString["type"] != null)
{
string type = Request.QueryString["type"].ToString();
switch (type)
{
case "Bar":
//显示圆状图
myPane.AddBar("匿名用户", pointList1, Color.Red);
myPane.AddBar("会员用户", pointList2, Color.Blue);
break;
case "Curve":
//显示折线图
myPane.AddCurve("匿名用户", pointList1, Color.Red);
myPane.AddCurve("会员用户", pointList2, Color.Blue);
break;
case "Stick":
//显示线状图
myPane.AddStick("匿名用户", pointList1, Color.Red);
myPane.AddStick("会员用户", pointList2, Color.Blue);
break;
default:
//显示圆状图
myPane.AddBar("匿名用户", pointList1, Color.Red);
myPane.AddBar("会员用户", pointList2, Color.Blue);
break;
}
}
else
{
//添加两个用户
myPane.AddCurve("匿名用户", pointList1, Color.Red);
myPane.AddCurve("会员用户", pointList2, Color.Blue);
}
//----------------------------------------------------------------------------------------------

//设置报表外部的渐变颜色
myPane.Fill = new Fill(Color.White, Color.FromArgb(200, 200, 255), 45.0f);
//设置报表内部的渐变颜色
myPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45.0f);
//刷新
pane.AxisChange(g);
}

protected void Page_Load(object sender, EventArgs e)
{

}
}


ZedGraph_Pie.aspx  //生成饼图代码页

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ZedGraph_Pie.aspx.cs" Inherits="ZedGraph_Pie" %>

<%@ Register Assembly="ZedGraph.Web" Namespace="ZedGraph.Web" TagPrefix="cc1" %>
<cc1:ZedGraphWeb ID="ZedGraphWeb1" runat="server" Width="500" Height="375" RenderMode="RawImage">
</cc1:ZedGraphWeb>


ZedGraph_Pie.aspx.cs  //生成饼图代码页

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ZedGraph;
using ZedGraph.Web;
using System.Drawing;

public partial class ZedGraph_Pie : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}

private void InitializeComponent()
{
ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(ZedGraphWeb1_RenderGraph);
}

void ZedGraphWeb1_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject, System.Drawing.Graphics g, ZedGraph.MasterPane pane)
{
GraphPane myPane = pane[0];
myPane.Chart.Fill = new Fill(Color.LightYellow);
myPane.Title.Text = "文化程度比率";
string[] labels = new string[6];
double[] values = new double[6];
labels[0] = "小学";
labels[1] = "初中";
labels[2] = "高中";
labels[3] = "专科";
labels[4] = "本科";
labels[5] = "研究生";

values[0] = 5000;
values[1] = 6000;
values[2] = 7000;
values[3] = 8000;
values[4] = 9000;
values[5] = 10000;

myPane.AddPieSlices(values, labels);
pane.AxisChange();
}

protected void Page_Load(object sender, EventArgs e)
{

}
}


------------------------------------------------------------------------------------------------------------------------------

如果希望报表在网页中以<img>标签方式显示可以在前台页面做如下设置:RenderMode="ImageTag"

具体实例代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ZedGraphDemo.aspx.cs" Inherits="ZedGraphDemo" %>
<%@ Register Assembly="ZedGraph.Web" Namespace="ZedGraph.Web" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc1:ZedGraphWeb id="ZedGraphWeb1" runat="server" Height="300" Width="300" BarType="PercentStack" RenderMode="ImageTag" OutputFormat="Png" RenderedImagePath="images">
</cc1:ZedGraphWeb>
</div>
</form>
</body>
</html>


在ZedDemo.aspx页面显示效果如下:



本实例相关源码下载地址为:

http://download.csdn.net/detail/idays021/4397560
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息