.Net的绘图控件ZedGraph的使用

ZedGraph 是一个开源的.NET图表类库, 全部代码都是用C#开发的。它可以利用任意的数据集合创建2D的线性和柱形图表

我们一般不直接使用ZedGraphControl对象,而是使用它的面板对象来进行操作,这里我们将它的面板对象命名为myPane

//创建ZedGraph对象ZedGraph.ZedGraphControl zgc = new ZedGraph.ZedGraphControl();//获得ZedGraph对象的面板对象
GraphPane myPane = zgc.GraphPane;

1、一些关于myPane对象的常用的属性及其作用

属性值 属性介绍
XAxis 图表的X轴

1、设置窗体的标题

myPane.Title.Text = “这是窗体的标题”

1、设置X轴等不使用10次幂表示数据,而是使用具体的数来表示

 myPane.XAxis.Scale.IsUseTenPower = false;

2、在图形的显示界面中显示栅格

myPane.XAxis.MajorGrid.IsVisible = true;//设置X轴等不使用10次幂表示数据,而是使用具体的数来表示myPane.XAxis.Scale.Mag = 0;myPane.YAxis.Scale.Mag = 0;myPane.Y2Axis.Scale.Mag = 0;

3

     //去除两个Y轴之间标度的相互对应,使标度均匀分布myPane.YAxis.MajorTic.IsOpposite = false;myPane.Y2Axis.MajorTic.IsOpposite = false;myPane.YAxis.MinorTic.IsOpposite = false;myPane.Y2Axis.MinorTic.IsOpposite = false;

1、 基本操作
在初始化ZedGraphControl对象之后
ZedGraph.ZedGraphControl zedGraph = new ZedGraph.ZedGraphControl();

  1. 第一步,导入ZedGraph.dll文件,具体如何导入的参见:C#中如何导入本地dll文件

  2. 在Form1这个类中添加一个属性 private ZedGraph.ZedGraphControl zg1;我们在之后的窗体构建中需要使用到这个对象

  3. 在Form1.Designer.cs的 InitializeComponent()方法中添加如下代码,对我们的zg1属性进行初始化

            this.components = new System.ComponentModel.Container();this.zg1 = new ZedGraph.ZedGraphControl();this.SuspendLayout();// // zg1// this.zg1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right)));this.zg1.EditButtons = System.Windows.Forms.MouseButtons.Left;this.zg1.Location = new System.Drawing.Point(12, 11);this.zg1.Name = "zg1";this.zg1.PanModifierKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.None)));this.zg1.ScrollGrace = 0D;this.zg1.ScrollMaxX = 0D;this.zg1.ScrollMaxY = 0D;this.zg1.ScrollMaxY2 = 0D;this.zg1.ScrollMinX = 0D;this.zg1.ScrollMinY = 0D;this.zg1.ScrollMinY2 = 0D;this.zg1.Size = new System.Drawing.Size(931, 524);this.zg1.TabIndex = 0;this.Controls.Add(this.zg1);this.ClientSize = new System.Drawing.Size(955, 547);

注意要设置this.ClientSize = new System.Drawing.Size(955, 547)的大小为(955,547),
原来的是(800,450),更改之后可以让生成的图形进行居中显示

  1. 此时就可以在Form1.cs中使用zg1了,创建一个
    void CreateGraph(ZedGraphControl zgc)方法,入参是ZedGraphControl类型,此处的ZedGraphControl类是ZedGraph.dll中封装的一个类
 private void Form1_Load(object sender, EventArgs e){CreateGraph(zg1);}

此时我们在Form1_Load方法中调用CreateGraph()方法,并将在Form1.Designer.cs中创建的属性zg1作为参数进行传递,接下来就是在CreateGraph()中写创建曲线的代码即可

  1. 首先创建一个面板对象(画的东西总得有个载体吧),作为二维图形,想要画图自然就是确定X与Y坐标,然后将每一个点使用曲线连接起来即可,这样就实现了曲线的绘制
GraphPane myPane = zgc.GraphPane;

创建GraphPane对象,这里的GraphPane类也是zedGraph中封装的一个类

            myPane.Title.Text = "曲线测试";myPane.XAxis.Title.Text = "X轴";myPane.YAxis.Title.Text = "Y轴";

这里设置了图形的标题,以及X轴与Y轴旁边显示的文本,运行程序,你会看到一个空的坐标轴以及你设置的3个文本信息,如下所示

这里的坐标轴的标度是系统默认的标度

  • 曲线是由一个个点连接而成的,我们先创建一个曲线对象,再将点对象一个个放置到该曲线对象上,将这些点用曲线进行连接,就形成了我们需要的曲线效果了
  • LineItem是ZedGraph自带的曲线对象
  • PointPairList是ZedGraph自带的放置坐标点的容器对象,将坐标以(X,Y)的形式添加到容器中
            LineItem lineItem;Random random = new Random();PointPairList list = new PointPairList();for (int i = 0; i < 20; i++){list.Add(i, random.NextDouble()  * 100);}lineItem = myPane.AddCurve("测试的曲线", list, Color.Red);zgc.AxisChange();

这里我们使用Random函数生成Y轴坐标,X坐标按照第几次循环来生成,这里我们创建的是最简单的一条曲线的情况。记住最后要加 zgc.AxisChange();这个方法的调用,曲线才能正常显示,显示的效果如下所示

开源框架ZedGraph的使用相关推荐

  1. .NET平台下开源框架

    一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...

  2. Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:没有了 下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置 前言 V1.x版本终于到来了.本次 ...

  3. tomcat中request对象是被创建的_常用开源框架中设计模式使用分析(全)

    一.前言 说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者可以简化代码,或者可以是代码逻辑开起来清晰,或者对功能扩展很 ...

  4. 分布式计算开源框架Hadoop入门实践

    在SIP项目设计的过程中,对于它庞大的日志在开始时就考虑使用任务分解的多线程处理模式来分析统计,在我从前写的文章<Tiger Concurrent Practice --日志分析并行分解设计与实 ...

  5. python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架

    很多小伙伴在学习wen的时候说,有没有几个常用的框架,好多小伙伴都只说对了其中几个,只有少部分是说正确的,想要了解更多,欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659 ...

  6. 发布开源框架到CocoaPods入坑指南

    个人原文博客地址: 发布开源框架到CocoaPods入坑指南 在开发过程中一定会用到一些第三方框架, 只要安装了CocoaPods, 然后通过pod install命令, 就可以集成框架到项目中了 可 ...

  7. Android_开源框架_Volley实例

    2019独角兽企业重金招聘Python工程师标准>>> 1.自定义相关类 在 Android_开源框架_Volley(Google IO 2013)源代码及内部实现过程分析一文中,简 ...

  8. 百度飞桨全新升级:重磅推出PaddleHelix平台、开源框架V2.0RC,硬件生态路线图全公开...

    12月20日,WAVE SUMMIT+2020深度学习开发者峰会在北京举办.本届峰会,百度飞桨带来八大全新发布与升级,有支持前沿技术探索和应用的生物计算平台PaddleHelix螺旋桨,开发更加便捷的 ...

  9. 2020,国产AI开源框架“亮剑”TensorFlow、PyTorch

    「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分.通过对AI生态专家.创业者.行业KOL的访谈,反映其对于行业的思考.未来趋势的判断.技术的实践,以及成长的经历. 20 ...

  10. 再见Spring!下一个开源框架更香!

    在MyBatis 3.5.1这个版中有968个类.2770个字段.8422个方法.42504行代码.186428个指令码.其源码体量只有Spring 的1/5,也是Hibernate的1/5. 但在功 ...

最新文章

  1. Android-MeasureSpec那些事
  2. 【设计模式】三言两语 设计模式
  3. SAP ABAP 服务器上OData Gateway 框架代码的单步调试
  4. 淘宝代码和html区别,taobao.html
  5. C language day1
  6. Python开发常用工具库
  7. MIK C语言面试两题
  8. (11)Node.js 核心模块fs – 同步函数( synchronization )
  9. 你真的了解 ConcurrentHashMap 吗?
  10. linux克隆后没有eth0,解决linux机器克隆后eth0不见的问题
  11. sublime 执行print带有中文时出错Decode error - output not utf-8
  12. Java集合源码分析(二):哈希表
  13. C语言printf输出格式总结
  14. 【引用】我国一、二级学科目录
  15. 中科院计算机和理论物理双硕士白,中科院研究生理论物理怎么不学相对论?
  16. 基于ASP.NET的网络购物系统设计与实现
  17. 2018年第九届蓝桥杯JAVA A组国赛 —— 第二题:阅兵方阵(暴力)
  18. EffectiveC++-读后感
  19. 慧算账解读新《代理记账管理办法》
  20. 全球最大同性交友网站,已经10岁了!

热门文章

  1. 线性代数matlab的心得体会,关于线性代数心得体会
  2. matlab中转置操作,如何转置MATLAB表?
  3. 神舟刷蓝天w650dbios_神舟Z7-CT7NA刷入蓝天BIOS破除40W功耗墙
  4. 基于SWMM及自主开发城市内涝一维二维耦合软件的复杂城市排水系统建模技术及在城市排涝、海绵城市等领域实践
  5. mysql数据库url正确的是_下面关于连接mysql下的mydb数据库的url,编写正确的是()...
  6. RF无线射频电路设计难点分析
  7. grads插值_GrADS中填色标尺cbarn用法
  8. 基于VB的员工请假管理系统设计与实现
  9. 文字转语音真人发声免费的有哪些?文字转语音有这两款软件就够了
  10. 遭遇scvhost.exe,qsetup.exe,dsound.dll,hnetcfg.dll,olepro32.dll等1