我使用mschart控件画柱状图和折线图,有两个问题请教:
1,怎么通过代码更改柱状图的颜色?
   我的每一个序列有两个柱子(columncount=2),颜色默认是蓝色和黄色,当数据满足一定条件时,我想让蓝色的柱子变为红色,黄色的柱子颜色不变,请问用代码怎么实现?
2,我的数据很多,那么X轴坐标全部变为竖的了,看不清楚,请问怎么解决?使用滚动条?怎么使用?
谢谢!!!这是你的回复:
MSChart1.Plot.SeriesCollection(1).DataPoints(-1).Brush.FillColor.Set 100, 100, 100
MSChart1.Plot.SeriesCollection(2).DataPoints(-1).Brush.FillColor.Set 100, 100, 200
MSChart1.Plot.SeriesCollection(3).DataPoints(-1).Brush.FillColor.Set 100, 100, 300
MSChart1.Plot.SeriesCollection(1).Pen.VtColor.Set 200, 200, 200
可是这样的话所有SeriesCollection(1)的颜色都变了,我要的是只有满足条件的柱子的颜色变化,不满足条件的不变。怎么解决?
第2个问题怎么解决?
还有什么好的控件可以代替mschart吗?

解决方案 »

  1.   

    序列是一起的,颜色应该只能一起改变,不能让1个序列同时拥有多个颜色这样吧,如果这两个问题都要处理,我建议你使用picture控件,自己画,好控制
    使用picture.line方法
      

  2.   

    to : online(龙卷风V2.0--再战江湖)
    有这方面的代码吗?可以实现类似mschart控件的柱状图和折线图。
    我的时间很紧,自己也没画过。
      

  3.   

    不要着急,我试着用picture控件试试
      

  4.   

    希望对你有帮助'引用microsoft activex data object 2.x library
    Option Explicit
    Private conn As ADODB.Connection
    Private rs As ADODB.Recordset
    结构
    Private Type Student
        ID As Integer
        Name As String
        Age As Integer
    End TypePrivate Num As Integer
    Private Students() As StudentPrivate Sub Command1_Click()Dim ll As Single
    Dim i As Integer
    Dim fg As Single
    '画坐标系
        ll = -Num / 10
        '定义坐标
        Picture1.Scale (ll, 20)-(6, -4)
        '画坐标轴
        Picture1.Line (0, 20)-(0, 0)
        Picture1.Line -(Num, 0)im j As Integer
    Dim lage As Integer
    Dim txt As String
        For j = 1 To Num
            lage = Students(j).Age
            '填充
            Picture1.Line (j - 1, 0)-(j, lage), QBColor(j), BF
            Picture1.Line (j - 1, 0)-(j, lage), vbBlack, B
            
            '画age
            txt = Format(lage)
            Picture1.CurrentX = j - 0.5 - Picture1.TextWidth(txt) / 2
            Picture1.CurrentY = lage + 1
            Picture1.Print txt
        
            '画姓名
            txt = Students(j).Name
            Picture1.CurrentX = j - 0.5 - Picture1.TextWidth(txt) / 2
            Picture1.CurrentY = -0.5
            Picture1.Print txt
        Next j
    End SubPrivate Sub Form_Load()
    Set conn = New ADODB.Connection
    Dim dbfilename As String
    dbfilename = App.Path & "\chart.mdb"
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbfilename & ";Persist Security Info=False;"
    conn.CursorLocation = adUseClient
    Set rs = New ADODB.Recordset
    rs.Open "select * from students", conn, 1, 3
    Do While Not rs.EOF
                Num = Num + 1
                ReDim Preserve Students(1 To Num)
                Students(Num).ID = rs.Fields("ID")
                Students(Num).Name = rs.Fields("Name")
                Students(Num).Age = rs.Fields("Age")
            rs.MoveNext
    LoopEnd Sub