''定义数组对象,用来描述图例。
Dim arrValueNames(5) As String
arrValueNames(0) = "一月"
arrValueNames(1) = "二月"
arrValueNames(2) = "三月"
arrValueNames(3) = "四月"
arrValueNames(4) = "五月"
arrValueNames(5) = "六月"
''在画布(objBitMap对象)的坐标5,5处,用指定的Brush(画笔)对象和Font(字体)对象绘制统计图标题。
objGraphics.DrawString(" X 公司上半年销售情况", _
New Font("宋体", 16), Brushes.Black, New PointF(5, 5))
''创建图例文字。
Dim symbolLeg As PointF = New PointF(335, 20)
Dim descLeg As PointF = New PointF(360, 16)
''画出图例。利用objGraphics图形对象的三个方法画出图例:
''FillRectangle()方法画出填充矩形,DrawRectangle()方法画出矩形的边框,
''DrawString()方法画出说明文字。这三个图形对象的方法在 .NET 框架类库类库中均已重载,
''可以很方便根据不同的参数来画出图形。
For i = 0 To arrValueNames.Length - 1
''画出填充矩形。
objGraphics.FillRectangle(New SolidBrush(GetColor(i)), symbolLeg.X, symbolLeg.Y, 20, 10)
''画出矩形边框。
objGraphics.DrawRectangle(Pens.Black, symbolLeg.X, symbolLeg.Y, 20, 10)
''画出图例说明文字。
objGraphics.DrawString(arrValueNames(i).ToString, New Font("宋体", 10), Brushes.Black, descLeg)
''移动坐标位置,只移动Y方向的值即可。
symbolLeg.Y += 15
descLeg.Y += 15
Next i
''遍历数据源的每一项数据,并根据数据的大小画出矩形图(即柱形图的柱)。
For i = 0 To arrValues.Length - 1
''画出填充矩形。
objGraphics.FillRectangle(New SolidBrush(GetColor(i)), _
(i * 35) + 15, 200 - arrValues(i), 20, arrValues(i) + 5)
''画出矩形边框线。
objGraphics.DrawRectangle(Pens.Black, (i * 35) + 15, 200 - arrValues(i), 20, arrValues(i) + 5)
Next
''下面画饼图。先定义两个变量,代表当前角度和总角度,以便于画图时将角度进行按比例换算。
Dim sglCurrentAngle As Single = 0
Dim sglTotalAngle As Single = 0
''定义一个变量,代表总的销售额。
Dim sglTotalValues As Single = 0
''计算总销售额。
For i = 0 To arrValues.Length - 1
sglTotalValues += arrValues(i)
Next
i = 0
''遍历数据源的每一项数据,并根据数据的大小画出饼图。
''图形对象的FillPie()方法和DrawPie()在.NET 框架类库中已重载。
For i = 0 To arrValues.Length - 1
''计算当前角度值:当月销售额 / 总销售额 * 360,得到饼图中当月所占的角度大小。
sglCurrentAngle = arrValues(i) / sglTotalValues * 360
''画出填充圆弧。
objGraphics.FillPie(New SolidBrush(GetColor(i)), _
220, 95, 100, 100, sglTotalAngle, sglCurrentAngle)
''画出圆弧线。
objGraphics.DrawPie(Pens.Black, 220, 95, 100, 100, sglTotalAngle, sglCurrentAngle)
''把当前圆弧角度加到总角度上。
sglTotalAngle += sglCurrentAngle
Next i
''将objGraphics对象以指定的图形格式(这里是Gif)保存到指定的Stream对象,并输出到客户端。
objBitMap.Save(Response.OutputStream, ImageFormat.Gif)
End Sub
''下面这段函数用来根据不同的月份返回不同的颜色值。
Private Function Ge