zoukankan      html  css  js  c++  java
  • 基本教程篇--第一节:InitialSampleDemo.cs介绍

       第一节:InitialSampleDemo.cs介绍
            为了讲解方便,我先附上源代码和效果图。
    代码如下:
    using System;
    using System.Drawing;
    using System.Collections;
     
    using ZedGraph;
     
    namespace ZedGraph.Demo
    {
         ///<summary>
         /// Summary description for SimpleDemo.
         ///</summary>
         public class InitialSampleDemo : DemoBase
         {
     
               public InitialSampleDemo() : base( "Code Project Initial Sample",
                    "Initial Sample", DemoType.Tutorial )
               {
                    GraphPane myPane = base.GraphPane;
     
                    // Set the title and axis labels
                    myPane.Title = "My Test Graph/n(For CodeProject Sample)";
                    myPane.XAxis.Title = "My X Axis";
                    myPane.YAxis.Title = "My Y Axis";
                   
                    // Make up some data arrays based on the Sine function
                    PointPairList list1 = new PointPairList();
                    PointPairList list2 = new PointPairList();
                    for ( int i=0; i<36; i++ )
                    {
                         double x = (double) i + 5;
                         double y1 = 1.5 + Math.Sin( (double) i * 0.2 );
                         double y2 = 3.0 * ( 1.5 + Math.Sin( (double) i * 0.2 ) );
                         list1.Add( x, y1 );
                         list2.Add( x, y2 );
                    }
     
                    // Generate a red curve with diamond
                    // symbols, and "Porsche" in the legend
                    LineItem myCurve = myPane.AddCurve( "Porsche",
                         list1, Color.Red, SymbolType.Diamond );
     
                    // Generate a blue curve with circle
                    // symbols, and "Piper" in the legend
                    LineItem myCurve2 = myPane.AddCurve( "Piper",
                         list2, Color.Blue, SymbolType.Circle );
     
                    base.ZedGraphControl.AxisChange();
               }
         }
    }
     
            我们可以看到,InitialSampleDemo继承自CemoBase类,而DemoBase又继承自ZedGraphDemo这个接口。ZedGraphDemo接口定义了String Description、String Title、ZedGraph. ZedGraphControl ZedGraphControl 和 System.Collection.ICollection Types这四个属性。DemoBase除了实现这四个属性外,还添加了PaneBase Pane和MasterPane MasterPane这两个属性,此外DemoBase还实现了多载构造函数。关于各个类的具体含义和用法,我会在以后的篇幅中陆续介绍。这里只是给大家一个整体的大致结构。
            下面进行对代码的分析,由于这是第一个例子,所有我会讲得比较细,以后的例子就不会了。
            我们可以看到程序首先
    public InitialSampleDemo() : base( "Code Project Initial Sample" , "Initial Sample", DemoType.Tutorial )
    初始化基类的构造函数。基类重载了四个构造函数
    public DemoBase( string description, string title, DemoType type )
               {
                    ArrayList types = new ArrayList();
                    types.Add( type );
     
                    Init( description, title, types );
               }
              
               public DemoBase( string description, string title, DemoType type, DemoType type2 )
               {
                    ArrayList types = new ArrayList();
                    types.Add( type );
                    types.Add( type2 );
     
                    Init( description, title, types );
               }
              
               public DemoBase( string description, string title, ICollection types )
               {
                    Init( description, title, types );
               }
              
               private void Init( string description, string title, ICollection types )
               {
                    this.description = description;
                    this.title = title;
                    this.types = types;
     
                    control = new ZedGraphControl();
               }
    函数中的变量含义如下:
    Description:对此结构的描述。
    Title:在树形结构(TreeView)中显示的标题。
    Types:要把此类显示在哪个树形结构的区域中。若有多个Types,则把此类分入不同的树形区域中。例如MasterPane Sample在Tutorial Sample和 Special Features两个区域都有。见图中的相应区域标注。
                            myPane.Title = "My Test Graph/n(For CodeProject Sample)";
                    myPane.XAxis.Title = "My X Axis";
                    myPane.YAxis.Title = "My Y Axis";
         分别指定这个Pane的title、XAxis和YAxis的标题。见上图。
     
                    PointPairList list1 = new PointPairList();
                    PointPairList list2 = new PointPairList();
                    for ( int i=0; i<36; i++ )
                    {
                         double x = (double) i + 5;
                         double y1 = 1.5 + Math.Sin( (double) i * 0.2 );
                         double y2 = 3.0 * ( 1.5 + Math.Sin( (double) i * 0.2 ) );
                         list1.Add( x, y1 );
                         list2.Add( x, y2 );
                    }
            PointPairList类是一个集合类,继承自
    它是PointPair对象的集合,PointPair类是一个包含(X,Y)的坐标类。
    其中的for循环在为两个PointPairList复值。
     
    LineItem myCurve = myPane.AddCurve( "Porsche", list1, Color.Red, SymbolType.Diamond );
    LineItem类是ZedGraph中的线条类.
    myPane.AddCurve( "Porsche", list1, Color.Red, SymbolType.Diamond );
    的意思是将刚刚赋值的list以”Porsche”这个名字以红色和水晶形状画到Pane中,这个函数的返回值是一个LineItem。你可以通过myCurve这个变量来对它进行进一步的设定。其中SymbolType是个Enum,它枚举了12个可供使用的形状
     
    最后一步就是刷新了。base.ZedGraphControl.AxisChange();
    这样整个程序就完成了,简单吧,其实这是个简单的应该,以后会介绍更加复杂的用法和类库。
  • 相关阅读:
    八款常用的 Python GUI 开发框架推荐
    scrapy + mogoDB 网站爬虫
    tkinter界面卡死的解决办法
    通过核心API启动单个或多个scrapy爬虫
    爬虫怎样绕过验证码?
    Python爬虫入门教程 33-100 电影评论数据抓取 scrapy
    Python开发 之 Websocket 的使用示例
    StringBuffer详解
    其实python正则表达式就这样简单明了
    ABAP和Java里的单例模式攻击
  • 原文地址:https://www.cnblogs.com/alan666/p/8312505.html
Copyright © 2011-2022 走看看