ZedGraph控件 系列随笔(一)

上周因为维护公司一个项目的需要,要用到方便的画图控件,google了好几个都不甚如意,不过总算运气还好,在sf上找到了ZedGraph,功能很是强大,而且还是open source ;)
顺便插一句,PM给我的要求是实现多个Y坐标,我的第一感觉是自己重新封装GDI+的功能,花了四五个小时的时间,总算也像模像样了,但距离实现灵活拖动,以及灵活缩放等还soooooo远, 而且我封装的这个图形库-_-看上去实在也是太过朴素;)
拿到ZedGraph代码的第一刻,粗略看了它的demo,感觉不错,但由于demo众多,也没怎么仔细看,没看到有多Y轴的demo,后来看到有个MultiY demo,这是后话。
就我这两天用ZedGraph库的感觉,简单说一下ZedGraph的用法。
要使用ZedGraph,第一步当然是要引用它,然后通过
ZedGraphControl myGC  =   new  ZedGraphControl();
来获取画图板对象(姑且这么叫,个人觉得这里和GDI+自身的类体结构很像,画图之前必须先获得一个图形的载体:在GDI+中就是Graphics,在ZedGraph中是ZedGraphControl.GraphPane.
获取到一个ZedGraphControl对象之后,就可以在myGC.GraphPane上画图了。
然后,要实现画曲线的功能,就要在画图板上添加曲线了,也就是
LineItem lines  =  myGC.GraphPane.AddCurve(…);

ZedGraph库最大的好处是把数据和曲线绑定起来了,这是通过PointPairList这个集合来实现的,要画所有的点,只需要把所需画的点Add至PointPairList中,然后在AddCurve方法中把该PointPairList作为参数传入即可。
另外,说到多Y轴的实现,通过Y2Axis就可以很容易的达到目的。

b.t.w ZedGraph库可以很方便的扩展,顺便提一下的是,从ZedGraphControl.cs这个类开始追踪,可以很方便找到入手的捷径,不过老外也真能写,光是ZedGraphControl.cs这个文件就接近4000行-_-

 ps. 针对ZedGraph图形库的系列随笔会陆续放出来 ;)

你可能感兴趣的:(Graph)