最近考察了几个统计图表控件包,开源的有 ZedGraph , Nplot 等,但是相比之下还是 ZedGraph 强大,方便一些,其他的感觉还是半成品。收费的就多了,只要是商业的报表开发工具都有统计图表的功能,水晶报表, ActiveReport , Reporting Service ,不过要方便,功能单一的还是 dotnetCharting 。下面主要从 winform 使用上说说 ZedGraph 和 dotnetCharting 。
从效果上说 dotnetCharting 确实没的说,水晶式效果很是炫目,这应该是其最大的卖点。为了便于开发者学习,带了各种效果的示例代码。 DotnetCharting 在生成统计图的时候需要设置一个临时目录,用来保存生成的统计图的图片, dotnetCharting 的图表效果好,很大程度上是因为它生成了图片,然后将其显示在界面上。当然,作为代价,它牺牲了性能。同时,它不支持缩放,虽然你可以通过更改坐标轴的刻度来实现这个功能,但是性能上就差了很多。
如果你对性能要求不高, dotnetCharting 是非常好的选择。
ZedGraph 最大的卖点在哪里?应该是开源,你可以修改代码以适应自己的需求,例如: ZedGraph 在画线型图的时候,线条没有使用抗锯齿,你只要修改 Line 类的 Default 结构中的默认设置就可以了。和 dotnetCharting 相比, ZedGraph 的效果要差一些,不过,要是自己调整的好,也还不错,但是 ZedGraph 的优势不在这里。
由于 ZedGraph 是使用 GDI+ 直接在 Canvas 上进行描画,所以,性能得到了保证,如果你改变坐标轴的刻度,和 dotnetCharing 相比, ZedGraph 的反应速度是很快的。基于此, ZedGraph 提供了很重要的缩放和拖动功能,你可以通过鼠标滚轮进行方法,缩小图表,可以通过鼠标中键来拖动,非常方便。
对于类似股市的实时走势, cpu 使用率等实时变化的数据,使用 ZedGraph 也可以很方便地作到。 ZedGraph 在基于 PointPairList 作画,所以你只要在 PointPairList 这个集合中添加新的数据,然后进行重画就可以实现了,对于性能,上面说了,由于是直接使用 GDI+ ,性能是比较好的,我测过 400 个点是没问题的。所以, ZedGraph 对于实时要求比较强的需求也是可以应对的。
总的来说, dotnetCHARTING 生成的图表效果好,但是性能方面较差,对实时要求强的需求不适应。 ZedGraph 开源,效果比起 dotnetCHARTING 差,但是性能好,能适应有实时要求的数据。