基本教程篇----第九节MasterSampleDemo.cs介绍

2024-04-12 15:18

本文主要是介绍基本教程篇----第九节MasterSampleDemo.cs介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                                             第九节MasterSampleDemo.cs介绍

           最近一直挺忙的,都没时间写博客了,好在这是基础篇的最后一篇了,我也可以歇歇了,关于其它的深入章节我会在以后的时间补上的。
先来看看这一节的示图和源代码吧。
using System;
using System.Drawing;
using System.Collections;
 
using ZedGraph;
 
namespace ZedGraph.Demo
{
     /// <summary>
     /// Summary description for SimpleDemo.
     /// </summary>
     public class MasterSampleDemo : DemoBase
     {
 
         public MasterSampleDemo() : base( "Code Project MasterPane Sample",
                  "MasterPane Sample", DemoType.Tutorial )
         {
              MasterPane myMaster = base.MasterPane;
 
              // Remove the default GraphPane that comes with ZedGraphControl
              myMaster.PaneList.Clear();
 
              // Set the masterpane title
              myMaster.Title = "ZedGraph MasterPane Example";
              myMaster.IsShowTitle = true;
 
              // Fill the masterpane background with a color gradient
              myMaster.PaneFill = new Fill( Color.White, Color.MediumSlateBlue, 45.0F );
 
              // Set the margins to 10 points
              myMaster.MarginAll = 10;
 
              // Enable the masterpane legend
              myMaster.Legend.IsVisible = true;
              myMaster.Legend.Position = LegendPos.TopCenter;
 
              // Add a priority stamp
              TextItem text = new TextItem( "Priority", 0.88F, 0.12F );
              text.Location.CoordinateFrame = CoordType.PaneFraction;
              text.FontSpec.Angle = 15.0F;
              text.FontSpec.FontColor = Color.Red;
              text.FontSpec.IsBold = true;
              text.FontSpec.Size = 15;
              text.FontSpec.Border.IsVisible = false;
              text.FontSpec.Border.Color = Color.Red;
              text.FontSpec.Fill.IsVisible = false;
              text.Location.AlignH = AlignH.Left;
              text.Location.AlignV = AlignV.Bottom;
              myMaster.GraphItemList.Add( text );
 
              // Add a draf watermark è
              text = new TextItem( "DRAFT", 0.5F, 0.5F );
              text.Location.CoordinateFrame = CoordType.PaneFraction;
              text.FontSpec.Angle = 30.0F;
              text.FontSpec.FontColor = Color.FromArgb( 70, 255, 100, 100 );
              text.FontSpec.IsBold = true;
              text.FontSpec.Size = 100;
              text.FontSpec.Border.IsVisible = false;
              text.FontSpec.Fill.IsVisible = false;
              text.Location.AlignH = AlignH.Center;
              text.Location.AlignV = AlignV.Center;
              text.ZOrder = ZOrder.A_InFront;
              myMaster.GraphItemList.Add( text );
 
              // Initialize a color and symbol type rotator
              ColorSymbolRotator rotator = new ColorSymbolRotator();
 
              // Create some new GraphPanes
              for ( int j=0; j<5; j++ )
              {
                  // Create a new graph - rect dimensions do not matter here, since it
                  // will be resized by MasterPane.AutoPaneLayout()
                  GraphPane myPane = new GraphPane( new Rectangle( 10, 10, 10, 10 ),
                       "Case #" + (j+1).ToString(),
                       "Time, Days",
                       "Rate, m/s" );
 
                  // Fill the GraphPane background with a color gradient
                  myPane.PaneFill = new Fill( Color.White, Color.LightYellow, 45.0F );
                  myPane.BaseDimension = 6.0F;
 
                  // Make up some data arrays based on the Sine function
                  PointPairList list = new PointPairLis_u40 ?);
                  for ( int i=0; i<36; i++ )
                  {
                       double x = (double) i + 5;
                       double y = 3.0 * ( 1.5 + Math.Sin( (double) i * 0.2 + (double) j ) );
                       list.Add( x, y );
                  }
 
                  // Add a curve to the Graph, use the next sequential color and symbol
                  LineItem myCurve = myPane.AddCurve( "Type " + j.ToString(),
                       list, ro_u97 ?tor.NextColor, rotator.NextSymbol );
                  // Fill the symbols with white to make them opaque
                  myCurve.Symbol.Fill = new Fill( Color.White );
 
                  // Add the GraphPane to the MasterPane
                  myMaster.Add( myPane );
              }
 
              Graphics g = this.ZedGraphControl.CreateGraphics();
              // Tell ZedGraph to auto layout the new GraphPanes
              myMaster.AutoPaneLayout( g, PaneLayout.ExplicitRow32 );
              myMaster.AxisChange( g );
              g.Dispose();
         }
     }
}
     这一节主要是讲多 pane 的创建方法。里面大部分的方法和属性在以前的章节中已经介绍过了,这里只想讲三个地方: MasterPane 类、 ColorSymbolRotator 类和 ZOrder 这个属性的用法。
     首先就是 MasterPane 类。这个类就是创建多 pane 的类,是一个 GraphPane 类的集合。它里面的大部分属性和方法都继承自 PaneBase Object 。像 .NET 一样,这个类提供了 Item PaneList 属性来设置和获取里面的成员。在程序中我们也看到了,其实 MasterPane 什么也没做,就是把其它的类一项项的 Add 进它的集合中。
           ColorSymbolRotator 类就是一个为 GraphPane.AddCurve 方法循环提供不同颜色和符号的类。这个类的东西不多,我个人认为就相当于一个枚举一样,我们可以看到程序中只用到了 rotator.NextColor rotator.NextSymbol 这两个属性,来获取不同的颜色和符号。
     最后就是 Zorder 这个属性了,在前面的几节中我们也见过这个属性,可是当时我没有讲,现在我说说。 Zorder 就是图形在 Z 轴的位置。如果我们在平面上把左右看成 X 轴,把上下看成 Y 轴,那么内外就是 Z 轴了,也就是 Zorder 就是图形在内外的位置 ( 这个内外是针对其它图形来说的 ) 。我们可以看看示图中的 DRAFT 这个水印的效果,这就是 Zorder 的功能。如果你把程序中的
text.ZOrder = ZOrder.A_InFront; 改成 text.ZOrder = ZOrder.G_BehindAll;
那么 DRAFT 就是如下的效果了, DRAFT 就在各个 Pane 的下面了。
Zorder 是一个枚举共有七个枚举值。分别是 G_BehindAll F_BehindAxisFill E_BehindAxis D_BehindCurves C_BehindAxisBorder B_BehindLegend A_InFront 。具体的解释如

Member Name
Description
G_BehindAll
Specifies that the GraphItem will be behind all other objects (including the PaneBase Title).
F_BehindAxisFill
Specifies that the GraphItem will be behind the AxisRect background Fill (see AxisFill).
E_BehindAxis
Specifies that the GraphItem will be behind the Axis objects.
D_BehindCurves
Specifies that the GraphItem will be behind the CurveItem objects.
C_BehindAxisBorder
Specifies that the GraphItem will be behind the Axis border.
B_BehindLegend
Specifies that the GraphItem will be behind the Legend object.
A_InFront
Specifies that the GraphItem will be in front of all other objects, except for the other GraphItem objects that have the same ZOrder and are before this object in the GraphItemList.
Member Name
Description
 
G_BehindAll
Specifies that the GraphItem will be behind all other objects (including the PaneBase Title).
 
F_BehindAxisFill
Specifies that the GraphItem will be behind the AxisRect background Fill (see AxisFill).
 
E_BehindAxis
Specifies that the GraphItem will be behind the Axis objects.
 
D_BehindCurves
Specifies that the GraphItem will be behind the CurveItem objects.
 
C_BehindAxisBorder
Specifies that the GraphItem will be behind the Axis border.
 
B_BehindLegend
Specifies that the GraphItem will be behind the Legend object.
 
A_InFront
Specifies that the GraphItem will be in front of all other objects, except for the other GraphItem objects that have the same ZOrder and are before this object in the GraphItemList.
 
 
 
 
 

 
 

这篇关于基本教程篇----第九节MasterSampleDemo.cs介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/897495

相关文章

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配