对MsChart控件的了解几乎为零,最近想用这个控件显示计算的数据,于是从网络上搜索得到的MsChart控件的实例代码,我稍微修改了一下,原来的代码是只有一条曲线,弄了好久,终于得到了两条曲线(我的计算结果为在相同的X坐标得到几条曲线,也就是x值是相同的,但是对应几组y值,并在一个图里面画出)。
感觉这个控件涉及的东西太多了,而一些控件手册上根本就没有讲清楚,所以看了书等没看,书中没有涉及plot等对象的使用。
Private Sub Command3_Click()
    Dim MyData() As Double
    Dim i As Integer
    Dim n As Integer
    n = 40
    ReDim MyData(1 To n, 1 To 4)
    For i = 1 To n
        MyData(i, 1) = 3.1415926 * 2 * i / n '第一列存放X轴数据
        MyData(i, 2) = Cos(Sin(MyData(i, 1))) '第二列存放Y轴数据
        MyData(i, 3) = 3.1415926 * 2 * i / n
        MyData(i, 4) = Sin(Cos(MyData(i, 1)))
      
    Next
    With MSChart1
        '.TitleText = "速度 m/min"
        '设置图线的外观
        .Plot.SeriesCollection(1).Pen.Width = 30
        .Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid
        
        '设置XY轴
        .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
        .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
        '// 设置最大值
        .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 3.1415926 * 2 * i / n  '这里根据你的数据库中的最大值设置一合适值
        .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 1 '这里根据你的数据库中的最大值设置一合适值
        '// 设置最小值
        .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = -1
        .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0
        
        '//
        .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 5 'X轴主要网格数量
        .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 5 'Y轴主要网格数量
        .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量
        .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量
        .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
        .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
        MSChart1.Plot.AutoLayout = False
        MSChart1.Plot.UniformAxis = False
        MSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图
        MSChart1.ChartData = MyData  '数据
        
        '下面的代码是从MSDN中得来的
        For i = 1 To MSChart1.Plot.SeriesCollection.Count
            With MSChart1.Plot.SeriesCollection _
                .Item(i).DataPoints.Item(-1).Marker
                .Visible = True
                .Size = 5 ''为什么此处不起作用?从这行开始可以删除,效果没有任何改变,为什么?
                .Style = VtMarkerStyleFilledSquare '为什么此处不起作用?
                .FillColor.Automatic = False
                .FillColor.Set 0, 0, 255
            End With
        Next i
    End With
End Sub
但是在下面的代码中,我始终解决不了几个问题:
1 y轴的最小值设置小于0后,如何使X轴与Y轴的最小值相交,也就是X要在最下面
2 加入MSDN中的设置数据点的代码,为什么不起作用?(见代码说明)
3 能否给点美化图形的建议(最好给出属性设置)