自开发绘制图表类
最近,公司开发项目需要做一个图形报表,里面要实现读取数据库数据,然后绘制曲线图、柱形图、饼图。开始时候,我也有在网上搜索相关资料,试图可以找到现成的组件。但是.NET 2.0环境下只有Web组件,WinForm又不适用。还有一个免费的微软组件,但是要求.NET 3.5 SP 1环境。
由于种种限制,感觉非常不爽。所以就决定自己使用GDI+进行绘制,这里我编写了一个类库,用于实现上面提及的三种图形绘制。下载类库
下面通过一些代码,介绍一下如何使用这个类库。
绘制曲线图:
Sub drawlines()
Dim m As New ajChart(700, 500, 500, True, True)
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(750, 500, 1000, True, True)
Dim bmp As Bitmap = m.initCanvas()
m.DrawPillars(bmp, New ajPillar() { _
New ajPillar(0, "一月", m.GetRandColor(), 20, 702.0!), _
New ajPillar(1, "二月", m.GetRandColor(), 20, 122.0!), _
New ajPillar(2, "三月", m.GetRandColor(), 20, 22.0!), _
New ajPillar(3, "四月", m.GetRandColor(), 20, 95.0!), _
New ajPillar(4, "五月", m.GetRandColor(), 20, 480.0!), _
New ajPillar(5, "六月", m.GetRandColor(), 20, 367.0!), _
New ajPillar(6, "七月", m.GetRandColor(), 20, 222.0!), _
New ajPillar(7, "八月", m.GetRandColor(), 20, 62.0!), _
New ajPillar(8, "九月", m.GetRandColor(), 20, 444.0!), _
New ajPillar(9, "十月", m.GetRandColor(), 20, 195.0!), _
New ajPillar(10, "十一月", m.GetRandColor(), 20, 800.0!), _
New ajPillar(11, "十二月", m.GetRandColor(), 20, 680.0!) _
})
Me.PictureBox2.Image = bmp
End Sub
绘制饼图:
Sub drawpies()
Dim m As New ajChart(750, 500, 0, True, True)
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(), 1, 102.5!, border, c), _
New ajPie(2, "二月", m.GetRandColor(), 1, 452.0!, border, c), _
New ajPie(3, "三月", m.GetRandColor(), 1, 182.6!, border, c), _
New ajPie(4, "四月", m.GetRandColor(), 1, 202.2!, border, c), _
New ajPie(5, "五月", m.GetRandColor(), 1, 354.0!, border, c), _
New ajPie(6, "六月", m.GetRandColor(), 1, 50.0!, border, c) _
})
Me.PictureBox3.Image = bmp
End Sub
下面给出一些效果图:




浙公网安备 33010602011771号