第一节: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();
这样整个程序就完成了,简单吧,其实这是个简单的应该,以后会介绍更加复杂的用法和类库。
- MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件
MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件 前言 万事开头难,有了<MapSer ...
- 2014年度辛星html教程夏季版第一节
从今天起开始在博客园开启自己的html教程啦,先从第一节开始把,首先推荐一个网站,就是http:/www.w3cschool.cc,这是一个公开的教学网站,但是它有一个问题,那就是虽然很全面,但是不是 ...
- 2014年度辛星css教程夏季版第一节
CSS是Cascading Style Sheets的缩写,即层叠样式表,它用于表现HTML的样式,即HTML只是去写该网页有哪些内容,至于如何去表现它们,由CSS去定制. ************* ...
- ZedGraph类库之基本教程篇
第一部分:基本教程篇 ZedGraphDemo中一共有9个基本教程的例子.其中大部分都类似,我会讲解其中一些比较典型的例子.把ZedGraph类库的使用逐步展现给大 ...
- [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍
注:为了看上去比较清晰这里只转载了中文 原地址: [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍 本章将引导您完成安装和设置开发环境,然后你就可 ...
- Android精通教程-第一节Android入门简介
前言 大家好,给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease to be ...
- Matlab高级教程_第一篇:Matlab基础知识提炼_01
第一篇:Matlab基础知识提炼: 这一篇主要用系统和提炼性的语言对Matlab基础知识进行总结,主要适用于有语言基础的学习者.尽量不讲废话. 第一部分:Matlab是什么? 1 Matlab是Mat ...
- Unity3D教程宝典之Web服务器篇:(第一讲)服务器的架设
转载自风宇冲Unity3D教程学院 引言:本文主要介绍WAMP服务器的架设. 第一部分WAMP介绍;第二部分WAMP安装及使用. 第一部分WAMP介绍 什 ...
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
随机推荐
- imageView图片放大缩小及旋转
imageView图片放大缩小及旋转 一.简介 二.方法 1)设置图片放大缩小效果 第一步:将<ImageView>标签中的android:scaleType设置为"fitCen ...
- P3374 【模板】树状数组 1
树状数组模板题,用cdq分治做 cdq分治: 分:把l到r分成两个区间操作 治:对每个分出来的区间进行操作 但是cdq分治和一般分治不同的是,一般的分治左右两个区间互不干扰,但是cdq分治处理的是区间 ...
- springboot打Jar包和War包
一:打JAR包 在工程的pom.xml中添加以下依赖 <build> <plugins> <plugin> <groupId>org.springfra ...
- 内存保护机制及绕过方案——通过覆盖虚函数表绕过/GS机制
1 GS内存保护机制 1.1 GS工作原理 栈中的守护天使--GS,亦称作Stack Canary / Cookie,从VS2003起开始启用(也就说,GS机制是由编译器决定的,跟操作系统 ...
- “一键”知道自己的IP地址和网络供应商
打开浏览器,然后在地址栏里面输入“www.baidu.com” 进入百度主页以后,在搜索框内输入 “ip”,然后回车就可以了
- AS3中ASCII码和字符互转函数
AS3中ASCII码和字符互转函数 字符转成ASCII码: 格式:字符串变量.charCodeAt(字符位置); var str:String = “A”; trace(str.charCodeAt( ...
- iostat使用心得
iostat用于输出CPU和磁盘I/O相关的统计信息. 命令格式: iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ...
- Go语言使用匿名结构体解析JSON数据
手机拥有屏幕.电池.指纹识别等信息,将这些信息填充为 JSON 格式的数据.如果需要选择性地分离 JSON 中的数据则较为麻烦.Go 语言中的匿名结构体可以方便地完成这个操作. 首先给出完整的代码,然 ...
- C++之内核对象进行线程同步
用户模式下的线程同步机制提供了非常好的性能,但他们也的确存在一些局限性,而且不适用于许多应用程序,例如,对Interlocked系列函数只能对一个值进行操作,它们从来不会把线程切换到等待状态.我们可以 ...
- opencv之图像阈值化处理
一.函数简介 1.threshold-图像简单阈值化处理 函数原型:threshold(src, thresh, maxval, type, dst=None) src:图像矩阵 thresh:阈值 ...