绘制图形报表
利用.NET Compact Framework的绘制功能还可以绘制图形报表,例如:饼图、柱形图或折线图。下面以饼图为例,介绍如何绘制饼图的方法。绘制饼图的代码如清单7-8所示。
清单7-8:绘制饼图
…… Dim cBmp As New Bitmap(236, 184) ' 创建画布宽度为236,高度为184的Bitmap实例 Dim cGraphic As Graphics Dim cColor() As Color = {Color.Red, Color.Blue, Color.Green, Color.Gray, _ Color.LightCoral, Color.Gold} ' 5种颜色 Dim cPen As Pen Dim cSolidBrush As SolidBrush Dim cPoints() As Point Dim RowNum As Integer = 3 ' 定义扇区块数 Dim i As Integer = 0 Dim j As Integer = 0 Dim cAngle As Integer = 0 Dim tmp As Integer = 0 Dim xCircleCenter As Integer = 100 ' 定义圆心X坐标 Dim yCircleCenter As Integer = 100 ' 定义圆心Y坐标 cGraphic = Graphics.FromImage(cBmp) cGraphic.Clear(Color.Snow) For j = 0 To RowNum cAngle = 90 ' 定义扇区角度 ReDim cPoints(cAngle + 1) ' 用数学公式画圆 cPen = New Pen(cColor(j), 3) cSolidBrush = New SolidBrush(cColor(j)) For i = tmp To tmp + cAngle cPoints(i - tmp) = New Point cPoints(i - tmp).X = (1 - System.Math.Sin(i / 360 * 2 * System.Math.PI)) * (xCircleCenter - 30) + 10 cPoints(i - tmp).Y = (1 - System.Math.Cos(i / 360 * 2 * System.Math.PI)) * (yCircleCenter - 30) + 10 Next i ' 加入圆心坐标点 cPoints(cAngle + 1) = New Point cPoints(cAngle + 1).X = xCircleCenter - 20 cPoints(cAngle + 1).Y = yCircleCenter - 20 ' 绘制扇区对应的区域 cPen = New Pen(cColor(j), 3) cSolidBrush = New SolidBrush(cColor(j)) cGraphic.DrawPolygon(cPen, cPoints) cGraphic.FillPolygon(cSolidBrush, cPoints) tmp = tmp + cAngle Next pb_graphic.Image = cBmp …… |
在清单7-8中,首先定义一个指定大小的画布,画布也就是一个Bitmap实例。之后定义圆心点坐标。确定圆心点坐标则可以使用计算公式获得组成每个扇区弧线的点集合,弧线点集合与圆心点形成一个封闭的扇形区域。确定扇形区域后则可以开始绘制扇形图形并使用不同的颜色填充扇形区域。最后把绘制好的Bitmap实例通过PictureBox控件显示。清单7-8的执行结果如图7-6所示。
图7-6:绘制饼图
利用相同的原理,还可以实现柱图,如图7-7所示。
图7-7:绘制柱图