自开发绘制图表类

  最近,公司开发项目需要做一个图形报表,里面要实现读取数据库数据,然后绘制曲线图、柱形图、饼图。开始时候,我也有在网上搜索相关资料,试图可以找到现成的组件。但是.NET 2.0环境下只有Web组件,WinForm又不适用。还有一个免费的微软组件,但是要求.NET 3.5 SP 1环境。

  由于种种限制,感觉非常不爽。所以就决定自己使用GDI+进行绘制,这里我编写了一个类库,用于实现上面提及的三种图形绘制。下载类库

  下面通过一些代码,介绍一下如何使用这个类库。
绘制曲线图:

Sub drawlines()
        
Dim m As New ajChart(700500500TrueTrue)
        
Dim bmp As Bitmap = m.initCanvas()

        
Dim a As New ajLine(1"2006年", Color.Brown, 2)
        
With a
            .ajData.Add(
"一月"50.0!)
            .ajData.Add(
"二月"150.0!)
            .ajData.Add(
"三月"150.0!)
            .ajData.Add(
"四月"20.0!)
            .ajData.Add(
"五月"250.0!)
            .ajData.Add(
"六月"200.0!)
        
End With
        
Dim b As New ajLine(1"2007年", Color.Green, 2)
        
With b
            .ajData.Add(
"一月"150.0!)
            .ajData.Add(
"二月"50.0!)
            .ajData.Add(
"三月"400.0!)
            .ajData.Add(
"四月"80.0!)
            .ajData.Add(
"五月"10.0!)
            .ajData.Add(
"六月"260.0!)
        
End With
        
Dim c As New ajLine(3"2008年", Color.DodgerBlue, 2)
        
With c
            .ajData.Add(
"一月"30.0!)
            .ajData.Add(
"二月"390.0!)
            .ajData.Add(
"三月"11.0!)
            .ajData.Add(
"四月"380.0!)
            .ajData.Add(
"五月"450.0!)
            .ajData.Add(
"六月"55.0!)
        
End With

        m.DrawLines(bmp, a)
        m.DrawLines(bmp, b)
        m.DrawLines(bmp, c)
        
Me.PictureBox1.Image = bmp
    
End Sub

 

绘制柱形图:

Sub drawpillars()
        
Dim m As New ajChart(7505001000TrueTrue)
        
Dim bmp As Bitmap = m.initCanvas()

        m.DrawPillars(bmp, 
New ajPillar() { _
                      
New ajPillar(0"一月", m.GetRandColor(), 20702.0!), _
                      
New ajPillar(1"二月", m.GetRandColor(), 20122.0!), _
                      
New ajPillar(2"三月", m.GetRandColor(), 2022.0!), _
                      
New ajPillar(3"四月", m.GetRandColor(), 2095.0!), _
                      
New ajPillar(4"五月", m.GetRandColor(), 20480.0!), _
                      
New ajPillar(5"六月", m.GetRandColor(), 20367.0!), _
                      
New ajPillar(6"七月", m.GetRandColor(), 20222.0!), _
                      
New ajPillar(7"八月", m.GetRandColor(), 2062.0!), _
                      
New ajPillar(8"九月", m.GetRandColor(), 20444.0!), _
                      
New ajPillar(9"十月", m.GetRandColor(), 20195.0!), _
                      
New ajPillar(10"十一月", m.GetRandColor(), 20800.0!), _
                      
New ajPillar(11"十二月", m.GetRandColor(), 20680.0!) _
                      })
        
Me.PictureBox2.Image = bmp
    
End Sub


绘制饼图:

Sub drawpies()
        
Dim m As New ajChart(7505000TrueTrue)
        
Dim bmp As Bitmap = m.initCanvas()
        
Dim border As Single = 2.0!
        
Dim c As Color = Color.White
        m.DrawPies(bmp, 
New ajPie() { _
                   
New ajPie(1"一月", m.GetRandColor(), 1102.5!, border, c), _
                   
New ajPie(2"二月", m.GetRandColor(), 1452.0!, border, c), _
                   
New ajPie(3"三月", m.GetRandColor(), 1182.6!, border, c), _
                   
New ajPie(4"四月", m.GetRandColor(), 1202.2!, border, c), _
                   
New ajPie(5"五月", m.GetRandColor(), 1354.0!, border, c), _
                   
New ajPie(6"六月", m.GetRandColor(), 150.0!, border, c) _
                   })

        
Me.PictureBox3.Image = bmp
    
End Sub

 

下面给出一些效果图:

posted @ 2009-04-12 20:01  ajayumi  阅读(278)  评论(0)    收藏  举报