用 ZedGraph 控件画统计分析图
由于朋友需要把 C1WebChart.替换掉,改用开源的 ZedGraph 控件.以下做一个示例,
供大家参考:
步骤如下:
1、添加 ZedGraph 控件。如下图:
2、添加到控制面版。如下图:
3、制作用户控件。
a> 建立一个命名为: DrawGrap.ascx 用户控件。
b> 通过控制面版,把 ZedGraphWeb 拖到默认页面。 如下图:
c> 生成代码(DrawGrap.ascx)如下:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DrawGrap.ascx.cs
" Inherits="DrawGrap" %>
<%@ Register TagPrefix="zgw" Namespace="ZedGraph.Web" Assembly="ZedGraph.Web
" %>
d> 生成代码(DrawGrap.ascx.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 System.Drawing;
using ZedGraph;
using ZedGraph.Web;
using System.Collections.Generic;
///
/// 显示统计图形类型
///
public enum AnalyticsType
{
Line,
//折线图
Bar,
//柱状图
Pie
//饼图
};
public partial class DrawGrap : System.Web.UI.UserControl
{
Private Attribute
Public Property
protected void Page_Load(object sender, EventArgs e)
{
zedGraphControl.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventH
andler(zedGraphControl_RenderGraph);
}
private void InitDefaultColors()
{
defaultColors.Add(Color.Red);
defaultColors.Add(Color.Green);
defaultColors.Add(Color.Blue);
defaultColors.Add(Color.Yellow);
defaultColors.Add(Color.YellowGreen);
defaultColors.Add(Color.Brown);
defaultColors.Add(Color.Aqua);
defaultColors.Add(Color.Cyan);
defaultColors.Add(Color.DarkSeaGreen);
defaultColors.Add(Color.Indigo);
}
///
/// 如果属性为空则初始化属性数据
///
private void InitProperty()
{
InitDefaultColors();
if (string.IsNullOrEmpty(Title))
{
Title = "未命名统计图";
}
if (string.IsNullOrEmpty(XAxisTitle))
{
XAxisTitle = "横轴";
}
if (string.IsNullOrEmpty(YAxisTitle))
{
YAxisTitle = "纵轴";
}
if (Type == AnalyticsType.Pie)
{
Count = ScaleData.Count;
}
else
{
Count = DataSource.Count;
}
if (Colors.Count == 0 || Colors.Count != Count)
{
Random r = new Random();
int tempIndex = 0;
List tempIndexList = new List();
for (int i = 0; i < Count; i++)
{
tempIndex = r.Next(defaultColors.Count);
if (tempIndexList.Contains(tempIndex))
{
i--;
}
else
{
tempIndexList.Add(tempIndex);
Colors.Add(defaultColors[tempIndex]);
}
}
}
if (NameList.Count == 0)
{
if (Type == AnalyticsType.Bar)
{
for (int i = 0; i < DataSource[0].Count; i++)
{
NameList.Add("第" + i.ToString() + "组");
}
}
else
{
for (int i = 0; i < Count; i++)
{
NameList.Add("第" + i.ToString() + "组");
}
}
}
if (LabelList.Count == 0)
{
for (int i = 0; i < Count; i++)
{
LabelList.Add("含义" + i.ToString());
}
}
}
///
/// 画图
///
///
///
///
private void zedGraphControl_RenderGraph(ZedGraph.Web.ZedGraphWeb webObje
ct, System.Drawing.Graphics g, ZedGraph.MasterPane pane)
{
InitProperty();
GraphPane myPane = pane[0];
myPane.Title.Text = Title;
myPane.XAxis.Title.Text = XAxisTitle;
myPane.YAxis.Title.Text = YAxisTitle;
//if (true)
//{
// DrawMessage(myPane, "yiafdhaskjhfasfksahfasdlhfaslf lasgfasglgsadi");
pane.AxisChange(g);
return;
//
//
//}
switch (Type)
{
case AnalyticsType.Line:
DrawLine(myPane);
break;
case AnalyticsType.Bar:
DrawBar(myPane);
break;
case AnalyticsType.Pie:
DrawPie(myPane);
break;
default:
break;
}
pane.AxisChange(g);
}
Draw
}
e> 用户控件制作完成。
4、对控件的使用。
a> 创建测试页面(DrawGrap.aspx)
b> 把用户控件 DrawGrap.ascx 拖到默认的测试页面上(DrawGrap.aspx)
c> 后台代码如下:
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;
public partial class DrawGrap : System.Web.UI.Page