资源描述:
《Asp中C#中做统计图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Asp.Net实例:C#绘制统计图(柱状图,折线图,扇形图)2008-9-2419:30:32已被阅读:3582发表评论 统计图形种类繁多,有柱状图,折线图,扇形图等等,而统计图形的绘制方法也有很多,有Flash制作的统计图形,有水晶报表生成统计图形,有专门制图软件制作,也有编程语言自己制作的;这里我们用就C#制作三款最经典的统计图:柱状图,折线图和扇形图;既然是统计,当然需要数据,这里演示的数据存于SqlServer2000中,三款统计图形都是动态生成.其中柱状图我会附上制作步骤,其他两款统计图直接附源
2、码. 说明:需求不一样,统计图形绘制后的显示效果也不一样,比如这里柱状图的主要需求是为了比较每一期报名人数与通过人数的差,因此会把两根柱子放在一起会使比较结果一目了然.因此大家可以根据需要灵活绘制.一.柱状图的绘制.绘制步骤如下:1.定义绘图用到的类.定义绘图类intheight=500,width=700;Bitmapimage=newBitmap(width,height);Graphicsg=Graphics.FromImage(image);Penmypen=newPen(brush,1);2.绘
3、制图框.绘制图框g.FillRectangle(Brushes.WhiteSmoke,0,0,width,height);3.绘制横向坐标线绘制横向坐标线for(inti=0;i<14;i++){g.DrawLine(mypen,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={"第一期","第二期","第三期","第四期"
4、,"全年"};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“};for(inti=0;i<10;i++){g.DrawString(m[i].ToString(),font,Brushes.Blue,25,y);y=y+26;}7.定义数组存储数据库中统计的数据定
5、义存储统计数据的数组int[]Count1=newint[7];//存储从数据库读取的报名人数int[]Count2=newint[7];//存储从数据库读取的通过人数8.从数据库中读取报名人数与通过人数读取数据SqlConnectionCon=newSqlConnection("Server=(Local);Database=committeeTraining;");Con.Open();stringcmdtxt2="SELECT*FROM##CountwhereCompany='"+****+"'";S
6、qlDataAdapterda=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][“count3”].ToString());Count2[0]=Con
7、vert.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);So
8、lidBrushmybrush2=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)第一期通过