代码如下: using System.Drawing; public partial class bingtu : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //=====数据 DataTable dt = new DataTable(); DataColumn aa = new DataColumn("Name", Type.GetType("System.String"));//添加表头 DataColumn bb = new DataColumn("Apro", Type.GetType("System.String")); dt.Columns.Add(aa); dt.Columns.Add(bb); DataRow dr =dt.NewRow();//添加行数据 dr["Name"] = "黄金项链"; dr["Apro"] = "47.713"; DataRow dr2 = dt.NewRow();//添加行数据 dr2["Name"] = "白金项链"; dr2["Apro"] = "23.30"; DataRow dr3 = dt.NewRow();//添加行数据 dr3["Name"] = "钻石项链"; dr3["Apro"] = "29.30"; dt.Rows.Add(dr); dt.Rows.Add(dr2); dt.Rows.Add(dr3); //=====画饼图 int ilp; float Total = 0.0f, temp; for (ilp = 0; ilp < dt.Rows.Count; ilp++) { temp = Convert.ToSingle(dt.Rows[ilp]["Apro"]); Total += temp; } //设置字体 Font font = new Font("宋体", 9), fontitle = new Font("宋体", 10, FontStyle.Bold); //背景宽 int width = 230; int bufferspace = 15; int legendheight = font.Height * (dt.Rows.Count + 1) + bufferspace; int titleheight = fontitle.Height + bufferspace; int height = width + legendheight + titleheight + bufferspace;//白色背景 int pieheight = width; Rectangle pierect = new Rectangle(0, titleheight, width, pieheight);//生成矩形 //加上各种随机色 ArrayList colors = new ArrayList(); Random rmd = new Random(); for (ilp = 0; ilp < dt.Rows.Count; ilp++) colors.Add(new SolidBrush(Color.FromArgb(rmd.Next(255), rmd.Next(255), rmd.Next(255)))); //创建一个bitmap实例 Bitmap objbmp = new Bitmap(width, height); Graphics objgraphics = Graphics.FromImage(objbmp); //画一个白色背景 objgraphics.FillRectangle(new SolidBrush(Color.White),0,0,width,height); //画一个黄色亮背景 objgraphics.FillRectangle(new SolidBrush(Color.Yellow), pierect); //以下为画饼图 (有几行ROW画几个) float currentdegree = 0.0f; for (ilp = 0; ilp < dt.Rows.Count; ilp++) { objgraphics.FillPie((SolidBrush)colors[ilp],pierect,currentdegree, Convert.ToSingle(dt.Rows[ilp]["Apro"])/Total*360); currentdegree+=Convert.ToSingle(dt.Rows[ilp]["Apro"])/Total*360; } //以下为生成主标题 SolidBrush blackbrush=new SolidBrush(Color.Black); string title="产品市场占有率调查"; StringFormat stfmat=new StringFormat(); stfmat.Alignment=StringAlignment.Center; stfmat.LineAlignment=StringAlignment.Center; objgraphics.DrawString(title,fontitle,blackbrush,new Rectangle(0,0,width,titleheight),new StringFormat()); //列出各字段所得数目 objgraphics.DrawRectangle(new Pen (Color.Black,2),0,height-legendheight,width,legendheight); for (ilp = 0; ilp < dt.Rows.Count; ilp++) { objgraphics.FillRectangle((SolidBrush)colors[ilp],5,height-legendheight+font.Height*ilp+5,10,10); objgraphics.DrawString(((String)dt.Rows[ilp]["Name"])+"---"+Convert.ToString(Convert.ToSingle( dt.Rows[ilp]["Apro"])*100/Total).Substring(0,5)+"%", font,blackbrush,20,height-legendheight+font.Height*ilp+1); } //图像总的高度,一行字体的高度 objgraphics.DrawString("商品总数是:"+Convert.ToString(Total)+"件",font,blackbrush,5,height-font.Height); Response.ContentType = "image/Gif"; objbmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); objgraphics.Dispose(); objbmp.Dispose(); } }