直接上代码:using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
using System.Drawing.Imaging;
using System.Data.SqlClient;namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=bingtu;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("select YF,SL from pie order by YF desc",conn);
SqlDataReader dr = null;
dr = cmd.ExecuteReader(); int[] iXiaoSH=new int[12];
string[] sMoth=new string[12]; int iIndex = 0; try
{
while (dr.Read())
{
iXiaoSH[iIndex] = (int)dr["SL"];
sMoth[iIndex] = dr["YF"].ToString() + "月";
iIndex++;
}
}
catch (Exception)
{ throw;
}
finally
{
dr.Close();
conn.Close();
} Bitmap bm = new Bitmap(600, 300);
Graphics g;
g = Graphics.FromImage(bm);
g.Clear(Color.Black);
g.DrawString("饼图",new Font("宋体",16),Brushes.Blue,new Point(5,5)); Point myRec=new Point(515,30);
Point myDec=new Point(540,30);
Point myTxt=new Point(565,30);
g.DrawString("单位:万套", new Font("宋体", 9), Brushes.Red, new Point(515, 12)); for(int i=0;i<sMoth.Length;i++)
{
g.FillRectangle(new SolidBrush(GetColor(i)),myRec.X,myRec.Y,20,10);
g.DrawRectangle(Pens.Black,myRec.X,myRec.Y,20,10);
g.DrawString(sMoth[i].ToString(),new Font("宋体",9),Brushes.Black,myDec);
g.DrawString(iXiaoSH[i].ToString(),new Font("宋体",9),Brushes.Black,myTxt);
myDec.Y+=15;
myRec.Y+=15;
myTxt.Y+=15;
}
int iTatal=0;
float fCurrentAngle = 0;
float fStartAngle = 0;
for (int i = 0; i < iXiaoSH.Length; i++)
{
iTatal = iTatal + iXiaoSH[i];
}
for (int i = 0; i < iXiaoSH.Length; i++)
{
if (i == iXiaoSH.Length - 1)
{
fCurrentAngle = 360 - fStartAngle;
}
else
{
int iTemp = iXiaoSH[i];
fCurrentAngle = (iTemp * 360) / iTatal;
}
g.DrawPie(Pens.Black, 100, 40, 250, 250, fStartAngle, fCurrentAngle);
g.FillPie(new SolidBrush(GetColor(i)), 100, 40, 250, 250, fStartAngle, fCurrentAngle);
fStartAngle += fCurrentAngle;
}
Pen p = new Pen(Color.Black, 2);
g.DrawRectangle(p, 1, 1, 598, 298);
bm.Save(Response.OutputStream, ImageFormat.Jpeg);
} private Color GetColor(int itemIndex)
{
Color mycolor;
int i = itemIndex;
switch (i)
{
case 0:
mycolor=Color.Green;
return mycolor;
case 1:
mycolor=Color.Red;
return mycolor;
case 2:
mycolor=Color.Yellow;
return mycolor;
case 3:
mycolor=Color.Blue;
return mycolor;
case 4:
mycolor=Color.Orange;
return mycolor;
case 5:
mycolor=Color.Aqua;
return mycolor;
case 6:
mycolor=Color.SkyBlue;
return mycolor;
case 7:
mycolor=Color.DeepPink;
return mycolor;
case 8:
mycolor=Color.Azure;
return mycolor;
case 9:
mycolor=Color.Brown;
return mycolor;
case 10:
mycolor=Color.Pink;
return mycolor;
case 11:
mycolor=Color.BurlyWood;
return mycolor;
case 12:
mycolor=Color.Chartreuse;
return mycolor;
default:
mycolor=Color.Pink;
return mycolor;
}
}
}
}数据库测试正常,能够读取要用到的两个数组数据,没有报错,但运行显示的全是乱码,没有饼图!!
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
using System.Drawing.Imaging;
using System.Data.SqlClient;namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=bingtu;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("select YF,SL from pie order by YF desc",conn);
SqlDataReader dr = null;
dr = cmd.ExecuteReader(); int[] iXiaoSH=new int[12];
string[] sMoth=new string[12]; int iIndex = 0; try
{
while (dr.Read())
{
iXiaoSH[iIndex] = (int)dr["SL"];
sMoth[iIndex] = dr["YF"].ToString() + "月";
iIndex++;
}
}
catch (Exception)
{ throw;
}
finally
{
dr.Close();
conn.Close();
} Bitmap bm = new Bitmap(600, 300);
Graphics g;
g = Graphics.FromImage(bm);
g.Clear(Color.Black);
g.DrawString("饼图",new Font("宋体",16),Brushes.Blue,new Point(5,5)); Point myRec=new Point(515,30);
Point myDec=new Point(540,30);
Point myTxt=new Point(565,30);
g.DrawString("单位:万套", new Font("宋体", 9), Brushes.Red, new Point(515, 12)); for(int i=0;i<sMoth.Length;i++)
{
g.FillRectangle(new SolidBrush(GetColor(i)),myRec.X,myRec.Y,20,10);
g.DrawRectangle(Pens.Black,myRec.X,myRec.Y,20,10);
g.DrawString(sMoth[i].ToString(),new Font("宋体",9),Brushes.Black,myDec);
g.DrawString(iXiaoSH[i].ToString(),new Font("宋体",9),Brushes.Black,myTxt);
myDec.Y+=15;
myRec.Y+=15;
myTxt.Y+=15;
}
int iTatal=0;
float fCurrentAngle = 0;
float fStartAngle = 0;
for (int i = 0; i < iXiaoSH.Length; i++)
{
iTatal = iTatal + iXiaoSH[i];
}
for (int i = 0; i < iXiaoSH.Length; i++)
{
if (i == iXiaoSH.Length - 1)
{
fCurrentAngle = 360 - fStartAngle;
}
else
{
int iTemp = iXiaoSH[i];
fCurrentAngle = (iTemp * 360) / iTatal;
}
g.DrawPie(Pens.Black, 100, 40, 250, 250, fStartAngle, fCurrentAngle);
g.FillPie(new SolidBrush(GetColor(i)), 100, 40, 250, 250, fStartAngle, fCurrentAngle);
fStartAngle += fCurrentAngle;
}
Pen p = new Pen(Color.Black, 2);
g.DrawRectangle(p, 1, 1, 598, 298);
bm.Save(Response.OutputStream, ImageFormat.Jpeg);
} private Color GetColor(int itemIndex)
{
Color mycolor;
int i = itemIndex;
switch (i)
{
case 0:
mycolor=Color.Green;
return mycolor;
case 1:
mycolor=Color.Red;
return mycolor;
case 2:
mycolor=Color.Yellow;
return mycolor;
case 3:
mycolor=Color.Blue;
return mycolor;
case 4:
mycolor=Color.Orange;
return mycolor;
case 5:
mycolor=Color.Aqua;
return mycolor;
case 6:
mycolor=Color.SkyBlue;
return mycolor;
case 7:
mycolor=Color.DeepPink;
return mycolor;
case 8:
mycolor=Color.Azure;
return mycolor;
case 9:
mycolor=Color.Brown;
return mycolor;
case 10:
mycolor=Color.Pink;
return mycolor;
case 11:
mycolor=Color.BurlyWood;
return mycolor;
case 12:
mycolor=Color.Chartreuse;
return mycolor;
default:
mycolor=Color.Pink;
return mycolor;
}
}
}
}数据库测试正常,能够读取要用到的两个数组数据,没有报错,但运行显示的全是乱码,没有饼图!!
context.Response.ContentType = "image/Jpeg";
http://www.cnblogs.com/terrylee/archive/2005/10/12/253099.html