《拓文asp.net网站内容管理系统》官方演示站。
 设为首页  
 收藏本站
 作者:黄振安
 QQ:53854651
首 页 开源拓文.NET编程网站编程网页设计图形图像数据库软件工程留言本
    站内搜索:  
您现在的位置: 拓文网络 → .NET编程 → ASP.NET → 用asp.net画饼图(可用于各种投票程序)[正文]

热 门 文 章

相 关 文 章
  • ASP.NET性能优化
  • 在.NET框架应用程序中发送电子邮件
  • .net打包自动安装数据库
  • asp.net开发wap必备:更好的匹配手机设备
  • 用ashx动态生成文件
  • windows 2003下asp.Net站点无法使用用户名+密码的方
  • ASP.NET中17种正则表达式
  • 提高ASP.Net应用程序性能的十大方法
  • 一个通过web.Mail发送邮件的类
  • 在DataGrid里面根据日期的不同显示new图标
  • 用asp.net画饼图(可用于各种投票程序)
     
    [作者:不详    转贴自:不详    点击数:    更新时间:2006-3-2 15:45:55]

     

    //用asp.net画饼图(可用于各种投票程序)
    //和asp相比asp.net拥有更强大的功能,使用gdi+可以轻易实现以前很多不能办到的图形功能。
    //首先在c:\中建库mess.mdb,并建表title.
    //建二个字段,title(char型),point(int型)
    //非常满意     281
    //比较满意     297
    //还凑合         166
    //不满意         416
    //我还写了画折线图和条形图的部分,目前正在把它们全部写进一个类中。需要的可以和我联系:mailto:ouyang76@263.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 | 尾页  共 1 页
     
    winner 打印本页 关闭窗口

         文 章 评 论
    评论人 查看该文章的评论 发表时间
       笔 名* : 0 50分 60分 70分 80分 90分 100分
    评论内容 *: (最多1000字。当前字数:0)


    没有相关评论,欢迎您参与!

    - 关于本站 - 网站帮助 - 下载声明 - 友情连接 - 网站地图 -
    Copyright © 2005-2006 myTopWin.Com. All Rights Reserved . [桂ICP备06004496号]