原文地址:技术宅:VB.net 用VB.net编程序的时候,绘制数据图表一直是一个令人头疼的事情。用graphics方法一条一条线的画,程序极其繁琐,光是坐标变换就搞死人了。当然,输出一些比较特殊的图形的时候这是唯一的方法,但是如果只想要画个直方图或者折线图什么的真是杀鸡用牛刀。 貌似在VB6时代就出现了MSChart控件,利用Excel的内核来绘制简单的统计图。记得当年好像必须要绑定数据控件,从SQL或者Access中绑定数据,麻烦无比,从来没搞明白过。到了.net framework 4.0时代(VB.net 2010),这个控件直接集成进来了,称为Chart控件,据说方便了很多,可以直接用程序往里面很方便地加数据点。网上的各种教程相当的少,因此自己参照了许多教程来编了个简单的程序。在这里总结一下学习心得。 首先,就是在窗体上加一个Chart控件: 在窗体上调整其大小,默认就已经有一个柱状图了: 在这个控件内,分为几个层次: 一个Chart控件内可以包含若干个ChartArea,每个ChartArea相当于一个图、一个坐标轴(类似MATLAB里面的subplot的概念) 一个ChartArea里面有若干个Series,就是数据系列(套用Excel里面的概念),例如一组直方图的数据就是一个Series,一条折线数据也是一个Series 下图可以说明这种包含关系: 上图中所有的东西都是可以设置的,因此全部命令巨复杂无比,但知道了各种对象的包含关系,就可以很容易地在帮助里面找到了。 这里是一个简单的示例:http://jzcqx.blog.163.com/blog/static/31170512009813017295/ 下面以我编的一段程序来说明: 输出结果: 很简单,也很朴实,但让人看着也算心旷神怡和一目了然,最重要的是避免了写大量代码用于坑爹的坐标变换和坐标轴自适应。 下面再来说说如何将绘制的数据图表保存起来。Chart对象有一个方法叫SaveImage,直接就能将图表存为BMP,JPG,PNG,TIF等位图格式,更重要的是还能直接存成EMF格式的矢量图!这样就不怕后期放大了。 命令嘛,很简单: Chart1.SaveImage(SaveFileDialog1.FileName, ChartImageFormat.Png) 当然,真要输出很精美的图表,还是建议把数据输出到Excel或者MATLAB里面去慢慢调整。VB.NET里面随便画一下,只不过是为了方便分析数据时简单直观地预览数据分布而已。 |
|