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

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/houxh86/3680711






软件介绍ZedGraphV515是C#编写的.NET类库,提供了用户控件和web控件。它可以创建2D的线性图、条形图和饼图。 它功能完整且有详细的功能自定义。 基于LGPL协议开源,.NET 2.0 C#源代码)它的思路清淅,所以非常容易就上手.几个注意点: 图片的保存路径设置:RenderedImagePath属性中设置,程序对该文件夹应该是有写和修改权限的 图片的输出格式:OutputFormat属性中设置,Png的推荐,比较清晰。 Chart ChartBorder 图表区域的边框设置 ChartFill 图表区域的背景填充 Legend 图表的注释标签显示设置项目,一组数据对应一种颜色的注释 IsHStack 当有多个显示项的时候设置Y轴数据是叠加的还是分开的 Xaxis 图表区域的X轴相关信息设置 AxisColor 坐标轴颜色 Cross 坐标的原点,可以设置坐标的偏移程度 CrossAuto 原点自动设置:True的话Cross的设置就无效了。 FontSpec X轴标题字体相关信息 Angle X轴标题字体显示时候的角度,0为水平 90为垂直 Fill X轴标题字体填充信息 ColorOpacity 透明度 IsScaled 设置X轴标题字体显示大小是否根据图的比例放大缩小 RangeMax 填充时候的最大倾斜度(有过渡色,没试过) RangeMin 填充时候的最小倾斜度(有过渡色,没试过) StringAlignment X轴标题字体排列(不清楚,没试过) IsOmitMag 是否显示指数幂(10次方,没试过,似乎与IsUseTenPower有关系) IsPreventLabelOverlap 坐标值显示是否允许重叠,如果False的话,控件会根据坐标值长度自动消除部分坐标值的显示状态 IsShowTitle X轴标题是否显示 IsTicsBetweenLabels 两个坐标值之间是否自动显示分隔标志 IsUseTenPower 是否使用10次幂指数 IsVisible 是否显示X轴source下为ZedGraphV515控件的源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值