博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

开源图表控件ZedGraph控件的研究(1)

Posted on 2007-06-22 14:39  Arbean.Wu  阅读(8358)  评论(4编辑  收藏  举报
      正式着手研究ZedGraph控件,说到做到...
      因为项目需要,主要Web程序中使用,而且基本上的柱状图、折线图与饼图。所目标是学会这三种图的设计。当然,首先是掌握控件的使用,然后才可能对控件作自定义改造。
      查照了一下
王旭 的博客,他贴出了较详细的源码,按照其提供的源码,基本上能做出效果。
      主要设计步聚
      1、添加DLL引用:web工程中,要添加两个DLL的引用:ZedGraph 与 ZedGraph.Web。如图1所示:

DLL引用.BMP

                                                                        图1 DLL引用说明图

      2、把ZedGraph.Web添加以控件面板中,以方便设计时直接拖拉。如何添加就不详细讲了。效果如图2所示。

controlPan.BMP

                                                                     图2 控件添加到工具箱中

      3、把ZedGraph控件拖到页面设计器中,如图3所示。

dragControlToPage.BMP
图3 控件拖拉到页面设计器

      4、页面HTML代码如下所示:

 1<%@ Register TagPrefix="cc1" Namespace="ZedGraph.Web" Assembly="ZedGraph.Web" %>
 2<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="ZedGraphWeb1.WebForm1" %>
 3<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 4<HTML>
 5    <HEAD>
 6        <title>WebForm1</title>
 7        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
 8        <meta content="C#" name="CODE_LANGUAGE">
 9        <meta content="JavaScript" name="vs_defaultClientScript">
10        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
11    </HEAD>
12    <body MS_POSITIONING="GridLayout">
13        <form id="Form1" method="post" runat="server">
14            <FONT face="宋体">
15                <TABLE id="Table1" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 56px" cellSpacing="1"
16                    cellPadding="1" width="300" border="1">
17                    <TR>
18                        <TD></TD>
19                        <TD><FONT size="2">销售统计柱状图:</FONT></TD>
20                        <TD></TD>
21                    </TR>
22                    <TR>
23                        <TD></TD>
24                        <TD>
25                            <cc1:ZedGraphWeb id="ZedGraphWeb1" runat="server"></cc1:ZedGraphWeb></TD>
26                        <TD></TD>
27                    </TR>
28                    <TR>
29                        <TD></TD>
30                        <TD></TD>
31                        <TD></TD>
32                    </TR>
33                </TABLE>
34            </FONT>
35        </form>
36    </body>
37</HTML>

      5、编码 页面C#代码,如下所示:

 1        private void InitializeComponent()
 2        {    
 3            this.ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraph);//注册事件
 4            this.Load += new System.EventHandler(this.Page_Load);  
 5
 6        }

 7
 8//..
 9
10
11        private void OnRenderGraph(ZedGraphWeb zgw, Graphics g, MasterPane masterPane)
12        {
13            GraphPane myPane = masterPane[0];
14 
15            myPane.Title.Text = "销售统计";
16            myPane.XAxis.Title.Text = "区域";
17            myPane.YAxis.Title.Text = "销售总额: 元";
18 
19            PointPairList list = new PointPairList();
20            PointPairList list2 = new PointPairList();
21            PointPairList list3 = new PointPairList();
22            Random rand = new Random();
23 
24            for (double x = 0; x < 5; x += 1.0)
25            {
26                double y = rand.NextDouble() * 100;
27                double y2 = rand.NextDouble() * 100;
28                double y3 = rand.NextDouble() * 100;
29                list.Add(x, y);
30                list2.Add(x, y2);
31                list3.Add(x, y3);
32            }

33 
34            BarItem myCurve = myPane.AddBar("购买", list, Color.Blue);
35            myCurve.Bar.Fill = new Fill(Color.Blue, Color.White, Color.Blue);
36            BarItem myCurve2 = myPane.AddBar("续费", list2, Color.Red);
37            myCurve2.Bar.Fill = new Fill(Color.Red, Color.White, Color.Red);
38            BarItem myCurve3 = myPane.AddBar("升级", list3, Color.Green);
39            myCurve3.Bar.Fill = new Fill(Color.Green, Color.White, Color.Green);
40 
41            myPane.XAxis.MajorTic.IsBetweenLabels = true;
42            string[] labels = "域名""主机""数据库""邮局""套餐" };
43            myPane.XAxis.Scale.TextLabels = labels;
44            myPane.XAxis.Type = AxisType.Text;
45            myPane.Fill = new Fill(Color.White, Color.FromArgb(200200255), 45.0f);
46            myPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45.0f);
47 
48            masterPane.AxisChange(g);
49         
50        }

51

说明:本代码例子是从 王旭 的博客中 摘引的。

      6、运行效果如图4所示。

runPic.BMP
图4 运行效果


      图形属性说明,示意如图5所示。

ͼʾͼ.GIF

                                                                                       图5 控件属性示意图  
好了,今天到此为止。