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

posted @   风海迷沙  阅读(15454)  评论(21编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示