暑假的时候室友论文中需要比较数据趋势,画曲线图,正好我是学计算机的,便接下了这个任务,也算是做个小软件练习下,在选择语言的时候,我犹豫了,因为需要图形界面,我平时练算法用的c,显然不适合,java和vb都学过一些,不过我对java里面类(太多了)感到头疼,便选择用vb做这个事情。
重新熟悉了下vb的语法,首先vb也不是一个纯面向对象语言,控件都是用对象封装的,但是也有模块这种面向过程的代码。其中全局变量和公共方法都是放在模块中的,vb的数组定义也很有意思,默认情况下数组定义时需要指定数组的大小且大小数值必须为常量,这样想要定义一个变长的数组便有些麻烦,vb提供了redim方法,可以重新定义先前声明的数组
如:
Public array() as Integer Public Function myarray( len as Integer) redim array(1 to len) myarray=array End Function
这样可以在函数中来动态定义变长数组。其他循环,分支,变量定义等都很好理解。
下面来重点说一下mschart控件,mschart控件是微软提供的画图控件,我所要实现的就是用它画多条折线图。几个需要学习的知识点如下:
'指定arrData为曲线数据来源,其中arrData(i,0)如果为字符串则其被作为x轴刻度标签 MSChart1.ChartData = arrData '指定所画图表的类型,竖状图,饼图,折线图等等 MSChart1.chartType = VtChChartType2dLine '指定第i条曲线图例标签的名字 MSChart1.Column = i MSChart1.ColumnLabel = "temprature 1" '图例设置为显示 MSChart1.ShowLegend = true '设置y轴最大刻度为60,最小刻度为16,共有8条刻度线 MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 60 MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 16 MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision =8 '设置x,y轴坐标网格为虚线 MSChart1.Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted MSChart1.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted '设置x轴标题,同理可设置y轴标题,整个图表标题 MSChart1.Plot.Axis(VtChAxisIdX).AxisTitle.Text = "time" MSChart1.TitleText = "temprature_time"
基本上掌握这些都差不多能画出一个满足要求的图表了。还有一些比较不常用的属性可以自己编码试一下,可以看着英文意思猜一下等。
这是我画图的一个截图,效果还可以。
通过这次编写代码感觉自己在图形化程序上面存在弱势,哥要学习java了,以后这种程序就用java写了,vb太古老了,有点落后,有时间也想看看c#,多了解一门语言总是好的,用的时候多一种选择。