zoukankan      html  css  js  c++  java
  • ZedGraph自定义x轴标注(解决周数的循环显示)

    ZedGraph版本:5.1.4
    开发环境:.net2.0,vs2008
    在它的内置对象中,linechar对象的x轴的值是跟随值变化的,但是在以周为x轴坐标时,当遇到跨年的问题时,问题就来了,我们希望
    50,51,52,1,2,3,4的排列,但是如果这样赋值的话,zedgraph会按照值的大小把其排序:
    1,2,3,4,50,51,52
    当然不能让这样的事情发生,所以我用了一个绝对的周数来做x轴:
    50,51,52,53,54,55,56

    2008031901

    但是这样一来,看图片的用户就会很郁闷的去转换你的绝对周到底是相对于哪一年的哪一周。

    格式化X轴文本zedgraph只提供了一种方法,我们可以给它加上“周”这个字:

    myPane.XAxis.Scale.Format = "0周";

    没有效果图,凑合一个Y轴的来看看(myPane.YAxis.Scale.Format = "第0名";):

    2008031903

    但是这并不能把显示出来的53周转换成1周,于是想到了去改源代码:

    1,在Type.cs中

    public enum AxisType

    枚举类型中添加一个新类型Weekly:


    2,在Scale.cs文件中,MakeNewScale方法中添加实例化的分支:   

    MakeNewScale


    3,添加WeeklyScale.cs文件,内容如下:

    Code


    4,在web代码中只加一句:

    myPane.XAxis.Type = AxisType.Weekly; 

    就可以了:

    2008031902

    PS:在官方网站上其实有另外一个方法,就是重写XAixs的ScaleFormatEvent 方法:自定义刻度的格式

    文中指出,在使用中加入如下代码:

    z1.GraphPane.XAxis.ScaleFormatEvent += new Axis.ScaleFormatHandler( XScaleFormatEvent ); 

    就可以重写刻度显示:

    public string XScaleFormatEvent( GraphPane pane, Axis axis, double val, int index ) 

       
    return (val+50).ToString(); 
    }
     

    但是我无论如何也找不到z1.GraphPane.XAxis后面的ScaleFormatEvent 事件,也许我使用的版本已经不支持这样的写法了?

    希望本文能对您有所帮助

    fhmsha

  • 相关阅读:
    PyCharm黄色波浪线提示: Simplify chained comparison
    SQL Server 2017 新功能分享
    阿里云RDS for SQL Server使用的一些最佳实践
    Spark入门PPT分享
    亿级SQL Server运维的最佳实践PPT分享
    使用T-SQL找出执行时间过长的作业
    SQL Server中TOP子句可能导致的问题以及解决办法
    广州的小伙伴福利-由微软组织的在广州SQL Server线下活动
    在SQL Server中为什么不建议使用Not In子查询
    微软Ignite大会我的Session(SQL Server 2014 升级面面谈)PPT分享
  • 原文地址:https://www.cnblogs.com/fhmsha/p/1113257.html
Copyright © 2011-2022 走看看