基本教程篇----第九节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

相关文章

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是