贴个用Asp.net做的
<%@ Page Language="C#" %>
<%@import namespace="System.Data"%>
<%@import namespace="System.Data.OleDb"%>
<%@import namespace="System.Drawing"%>
<%@import namespace="System.Drawing.Imaging"%>
<script language="c#" runat="server">
  public void page_load(Object obj,EventArgs e)
 {
//把连接字串指定为一个常量
const String strconn = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
                             "Data Source=c:\\mess.mdb";
OleDbConnection conn=new OleDbConnection(strconn);
conn.Open();
string sql="select *  from title";
OleDbCommand cmd=new OleDbCommand(sql,conn);
DataSet ds=new DataSet();
OleDbDataAdapter adapter1=new OleDbDataAdapter(cmd);
adapter1.Fill(ds);
conn.Close();
float total=0.0f,tmp;
int iloop; 
    for(iloop=0;iloop<ds.Tables[0].Rows.Count;iloop++)
     {
        tmp=Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]);//转换成单精度,投票不可能投半票。也可写成Convert.ToInt32
        total+=tmp;
        }
//Response.Write(Convert.ToString(total));Font fontlegend=new Font("verdana",9),fonttitle=new Font("verdana",10,FontStyle.Bold);//设置字体
//fonttitle为主标题的字体int width=230;//白色背景宽
const int bufferspace=15;
int legendheight=fontlegend.Height*(ds.Tables[0].Rows.Count+1)+bufferspace;
 int titleheight = fonttitle.Height + bufferspace;
 int height = width + legendheight + titleheight + bufferspace;//白色背景高
 int pieheight = width;
Rectangle pierect=new Rectangle(0,titleheight,width,pieheight);//加上各种随机色
 ArrayList colors = new ArrayList();
 Random rnd = new Random();
 for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
  colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255))));Bitmap objbitmap=new Bitmap(width,height);//创建一个bitmap实例
//Bitmap objbitmap=new Bitmap(230,500);//创建一个bitmap实例
Graphics objgraphics=Graphics.FromImage(objbitmap);objgraphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);//画一个白色背景
objgraphics.FillRectangle(new SolidBrush(Color.LightYellow), pierect);//画一个亮黄色背景
//以下为画饼图(有几行row画几个)
float currentdegree=0.0f;
 for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
 {
  objgraphics.FillPie((SolidBrush) colors[iloop], pierect, currentdegree,
    Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]) / total * 360);
  currentdegree += Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]) / total * 360;
 }
//---以下为生成主标题
SolidBrush blackbrush=new SolidBrush(Color.Black);
string title="本次《程序员大本营》推出了配套的专刊,您对专刊满意吗?";
 StringFormat stringFormat = new StringFormat();
 stringFormat.Alignment = StringAlignment.Center;
 stringFormat.LineAlignment = StringAlignment.Center; objgraphics.DrawString(title, fonttitle, blackbrush, 
     new Rectangle(0, 0, width, titleheight), stringFormat);
//列出各字段与得票数
objgraphics.DrawRectangle(new Pen(Color.Black, 2), 0, height - legendheight, width, legendheight);
  for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
    {
      objgraphics.FillRectangle((SolidBrush) colors[iloop], 5, height - legendheight + fontlegend.Height * iloop + 5, 10, 10);
      objgraphics.DrawString(((String) ds.Tables[0].Rows[iloop]["title"]) + " - " + Convert.ToString(ds.Tables[0].Rows[iloop]["point"]), fontlegend, blackbrush, 
   20, height - legendheight + fontlegend.Height * iloop + 1);
        }
//
objgraphics.DrawString("总票数是:"+Convert.ToString(total),fontlegend,blackbrush, 5, height - fontlegend.Height );
//图像总的高度-一行字体的高度,即是最底行的一行字体高度(height - fontlegend.Height )
Response.ContentType="image/jpeg";
objbitmap.Save(Response.OutputStream,ImageFormat.Jpeg);
//objbitmap.Save("myyyyyyyyyyy.jpg", ImageFormat.Jpeg);//输出到文件objgraphics.Dispose();
objbitmap.Dispose();
  }
</script>

解决方案 »

  1.   

    private void btnChart_Click(object sender, System.EventArgs e)
    {
    SqlConnection cn = 
    new SqlConnection("Server=(local);DataBase=Northwind;user id=sa;password=;"); 
    cn.Open();
    DataSet ds = new DataSet("Chart");
    SqlDataAdapter da = new SqlDataAdapter("CustorderHist 'ALFKI'", cn);
    da.Fill(ds);
    OWC10.ChartSpaceClass oChartSpace = new OWC10.ChartSpaceClass();
    System.IO.StringWriter sw = new System.IO.StringWriter();
    XmlDocument xDoc = new XmlDocument();
    ds.WriteXml(sw);
    // clean up
    cn.Close();
    da.Dispose();
    ds.Dispose();
    xDoc.LoadXml(sw.ToString());
    sw.Close();
    System.Xml.XmlNodeList nodes;
    nodes = xDoc.ChildNodes.Item(0).ChildNodes;
    int nCount = nodes.Count;
    string[] aNames = new string[nCount];
    string[] aTotals = new string[nCount];
    string names=String.Empty;
    string totals =String.Empty;
    int i = 0;
    for(i=1;i<nCount;i++)
    {
    aNames[i]= nodes.Item(i-1).ChildNodes.Item(0).InnerText; 
    aTotals[i]= nodes.Item(i-1).ChildNodes.Item(1).InnerText;
    }
    //Chart control accepts tab-delimited string of values
    names= String.Join("\t", aNames); 
    totals= String.Join("\t", aTotals);
    oChartSpace.Charts.Add(0);
    oChartSpace.Charts[0].SeriesCollection.Add(0);
    oChartSpace.Charts[0].SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimCategories,
    Convert.ToInt32(OWC10.ChartSpecialDataSourcesEnum.chDataLiteral),names );
    oChartSpace.Charts[0].SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimValues,
    Convert.ToInt32(OWC10.ChartSpecialDataSourcesEnum.chDataLiteral),totals );
    string strFullPathAndName=Server.MapPath(System.DateTime.Now.Ticks.ToString() +".gif");
    oChartSpace.ExportPicture( strFullPathAndName, "gif", 800, 600);
    Image1.ImageUrl=strFullPathAndName;
    Image1.Visible =true;
    RemoveFiles(Server.MapPath("."));

    private void RemoveFiles(string strPath)

    System.IO.DirectoryInfo di = new DirectoryInfo(strPath);
    FileInfo[] fiArr = di.GetFiles();
    foreach (FileInfo fi in fiArr)

    if(fi.Extension.ToString() ==".gif" )
    {
    // if file is older than 2 minutes, we'll clean it up
    TimeSpan min = new TimeSpan(0,0,0,2,0);
    if(fi.CreationTime < DateTime.Now.Subtract(min))
    {
    fi.Delete();
    }
    }
    }
    } http://aspnet.4guysfromrolla.com/articles/080603-1.aspx
    http://www.eggheadcafe.com/articles/20021223.asp