zl程序教程

您现在的位置是:首页 >  后端

当前栏目

asp.net中生成饼状与柱状图实例

Net实例ASP 生成 柱状图
2023-06-13 09:15:30 时间

本文实例讲述了asp.net中生成饼状与柱状图的实现方法。分享给大家供大家参考。具体方法如下:

一、生成图形的公共方法:

复制代码代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
//
//usingSystem.Data;
//usingSystem.Web.UI.WebControls;
//
usingSystem.Drawing;
usingSystem.Drawing.Imaging;
 
namespaceTools
{
   publicstaticclassOWCImageHelp
   {
       ///<summary>
       ///动态的生成柱状图和饼状图
       ///</summary>
       ///<paramname="arrValueNames">行坐标要显示的字段</param>
       ///<paramname="arrValues">纵坐标要显示的数字</param>
       ///<paramname="title">标题</param>
       publicstaticvoidGetZBImage(string[]arrValueNames,int[]arrValues,stringtitle)
       {
           BitmapobjBitMap=newBitmap(650,300);
           GraphicsobjGraphics;
           objGraphics=Graphics.FromImage(objBitMap);
           objGraphics.Clear(Color.White);
           //int[]arrValues={40000,32000,24000,30000,36000,28000};
           //string[]arrValueNames=newstring[]{"第一次","第二次","第三次","第四次","第五次","第六次"};
           objGraphics.DrawString(title,newSystem.Drawing.Font("宋体",16),Brushes.Blue,newPointF(5,5));
           PointFsymbolLeg=newPointF(335,20);
           PointFdescLeg=newPointF(360,16);
           //画出说明部分的图形
           for(inti=0;i<arrValueNames.Length;i++)
           {
               objGraphics.FillRectangle(newSolidBrush(GetColor(i)),symbolLeg.X,symbolLeg.Y,20,10);
               objGraphics.DrawRectangle(Pens.Black,symbolLeg.X,symbolLeg.Y,20,10);
               objGraphics.DrawString(arrValueNames[i].ToString(),newSystem.Drawing.Font("宋体",10),Brushes.Black,descLeg);
               symbolLeg.Y+=15;
               descLeg.Y+=15;
           }
           floatTotalValues=0;
           for(inti=0;i<=arrValues.Length-1;i++)
           {
               TotalValues+=arrValues[i];
           }
           //绘出矩形图。
           floatRectangleheight=0;
           PointFrecLeg=newPointF(12,200-arrValues[0]/TotalValues*300);
           for(inti=0;i<arrValues.Length;i++)
           {
               Rectangleheight=arrValues[i]/TotalValues*300;
               objGraphics.FillRectangle(newSolidBrush(GetColor(i)),(i*35)+15,200-Rectangleheight,20,Rectangleheight+50);
               objGraphics.DrawRectangle(Pens.Black,(i*35)+15,200-Rectangleheight,20,Rectangleheight+50);
               recLeg.Y=200-Rectangleheight-14;
               objGraphics.DrawString(arrValues[i].ToString(),newSystem.Drawing.Font("宋体",10),Brushes.Blue,recLeg);
               recLeg.X+=35;
           }
           //绘出圆形图。
           floatsglCurrentAngle=0;
           floatsglTotalAngle=0;
           for(inti=0;i<arrValues.Length;i++)
           {
               sglCurrentAngle=arrValues[i]/TotalValues*360;
               objGraphics.FillPie(newSolidBrush(GetColor(i)),220,95,100,100,sglTotalAngle,sglCurrentAngle);
               objGraphics.DrawPie(Pens.Black,220,95,100,100,sglTotalAngle,sglCurrentAngle);
               sglTotalAngle+=sglCurrentAngle;
           }
           objBitMap.Save(System.Web.HttpContext.Current.Response.OutputStream,ImageFormat.Gif);
       }
       //定义颜色。
       privatestaticColorGetColor(intitemIndex)
       {
           ColorobjColor;
           if(itemIndex==0)
           {
               objColor=Color.Maroon;
           }
           elseif(itemIndex==1)
           {
               objColor=Color.Red;
           }
           elseif(itemIndex==2)
           {
               objColor=Color.Gray;
           }
           elseif(itemIndex==3)
           {
               objColor=Color.Blue;
           }
           elseif(itemIndex==4)
           {
               objColor=Color.Orange;
           }
           elseif(itemIndex==5)
           {
               objColor=Color.Cyan;
           }
           elseif(itemIndex==6)
           {
               objColor=Color.Bisque;
           }
           elseif(itemIndex==7)
           {
               objColor=Color.Maroon;
           }
           elseif(itemIndex==8)
           {
               objColor=Color.Maroon;
           }
           else
           {
               objColor=Color.Blue;
           }
           returnobjColor;
       }
   }
}

二、新建生成饼状柱状图页面BZImage.aspx:
后台:
复制代码代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingBLL;
usingModels;
publicpartialclassGridViewDemo_BZImage:System.Web.UI.Page
{
   protectedvoidPage_Load(objectsender,EventArgse)
   {
       GetBZIamge();
   }
   ///<summary>
   ///生成饼状柱状图
   ///</summary>
   publicvoidGetBZIamge()
   {
       DataTabledt=BLL.StudentBLL.SelAllStudent();
       string[]rows=newstring[dt.Rows.Count];
       int[]columns=newint[dt.Rows.Count];
       for(inti=0;i<dt.Rows.Count;i++)
       {
           rows[i]=dt.Rows[i]["学生姓名"].ToString();
           columns[i]=Convert.ToInt32(dt.Rows[i]["薪金"].ToString());
       }
       Tools.OWCImageHelp.GetZBImage(rows,columns,"学生薪水查询");
   }
}

三、显示饼状柱状图的页面:
前台:
复制代码代码如下:<tablestyle="width:600px"onMouseOver="over()"onMouseOut="out()">
           <tr>
            <tdstyle="height:21px;width:35px;"align="center">
                   <imgid="BZImage"src="BZImage.aspx"alt=""/>
               </td>
           </tr>
</table>

希望本文所述对大家的asp.net程序设计有所帮助。