资源描述:
《C#-绘制统计图(柱状图--折线图--扇形图).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C#绘制统计图(柱状图,折线图,扇形图)统计图形种类繁多,有柱状图,折线图,扇形图等等,而统计图形的绘制方法也有很多,有Flash制作的统计图形,有水晶报表生成统计图形,有专门制图软件制作,也有编程语言自己制作的;这里我们用就C#制作三款最经典的统计图:柱状图,折线图和扇形图;既然是统计,当然需要数据,这里演示的数据存于SqlServer2000中,三款统计图形都是动态生成.其中柱状图我会附上制作步骤,其他两款统计图直接附源码.说明:需求不一样,统计图形绘制后的显示效果也不一样,比如这里柱状图的主要需求是为了比较每一期报名人数与通过人数的差,因此会把两根柱
2、子放在一起会使比较结果一目了然.因此大家可以根据需要灵活绘制.一.柱状图的绘制.绘制步骤如下:1.定义绘图用到的类.intheight=500,width=700;Bitmapimage=newBitmap(width,height);Graphicsg=Graphics.FromImage(image);Penmypen=newPen(brush,1);2.绘制图框.g.FillRectangle(Brushes.WhiteSmoke,0,0,width,height);3.绘制横向坐标线for(inti=0;i<14;i++){g.DrawLine(m
3、ypen,x,80,x,340);x=x+40;}4.绘制纵向坐标线for(inti=0;i<9;i++){g.DrawLine(mypen,60,y,620,y);y=y+26;}5.绘制横坐标值String[]n={"第一期","第二期","第三期","第四期","全年"};for(inti=0;i<7;i++){g.DrawString(n[i].ToString(),font,Brushes.Blue,x,348);x=x+78;}6.绘制纵坐标值String[]m={"250","225","200","175","150","125","100
4、“};for(inti=0;i<10;i++){g.DrawString(m[i].ToString(),font,Brushes.Blue,25,y);y=y+26;}7.定义数组存储数据库中统计的数据int[]Count1=newint[7];//存储从数据库读取的报名人数int[]Count2=newint[7];//存储从数据库读取的通过人数8.从数据库中读取报名人数与通过人数SqlConnectionCon=newSqlConnection("Server=(Local);Database=committeeTraining;");Con.Ope
5、n();stringcmdtxt2="SELECT*FROM##CountwhereCompany='"+****+"'";SqlDataAdapterda=newSqlDataAdapter(cmdtxt2,Con);DataSetds=newDataSet();da.Fill(ds);9.将读取的数据存储到数组中Count1[0]=Convert.ToInt32(ds.Tables[0].Rows[0][“count1”].ToString());Count1[1]=Convert.ToInt32(ds.Tables[0].Rows[0][“count
6、3”].ToString());Count2[0]=Convert.ToInt32(ds.Tables[0].Rows[0][“count2”].ToString());Count2[1]=Convert.ToInt32(ds.Tables[0].Rows[0]["count4"].ToString());10.定义画笔和画刷准备绘图x=80;Fontfont2=newSystem.Drawing.Font("Arial",10,FontStyle.Bold);SolidBrushmybrush=newSolidBrush(Color.Red);Solid
7、Brushmybrush2=newSolidBrush(Color.Green);11.根据数组中的值绘制柱状图(1)第一期报名人数g.FillRectangle(mybrush,x,340-Count1[0],20,Count1[0]);g.DrawString(Count1[0].ToString(),font2,Brushes.Red,x,340-Count1[0]-15);(2)第一期通过人数x=x+20;g.FillRectangle(mybrush2,x,340-Count2[0],20,Count2[0]);g.DrawString(Coun
8、t2[0].ToString(),font2,Brushes.Gr