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






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍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、付费专栏及课程。

余额充值