.NET网页显示饼形图

来源:互联网 发布:如何查看域名的ns记录 编辑:程序博客网 时间:2024/05/19 10:35


     既然在学习GDI+今天就乘胜追击,顺便研究了一下饼形图的实现,具体的效果和代码如下,新学习的知识,在这里留一个笔记吧算是。

     数据库字段及数据如下:

     。。

    最终呈现效果如下:

    。。

  接下来,就不用我说了,赤裸裸的源码奉上,大家也不用矜持啦。


  

using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;using System.Drawing ;using System.Drawing.Drawing2D ;using System.Collections;public partial class _Default : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        CreateImage();    }    private void CreateImage()    {        //把连接字串指定为一个常量        SqlConnection Con = new SqlConnection("server=QH-20150804WJPO;uid=sa;pwd=123;database=Xianxian");        Con.Open();        string cmdtxt = "select *  from tb_12";        //SqlCommand Com = new SqlCommand(cmdtxt, Con);        DataSet ds = new DataSet();        SqlDataAdapter Da = new SqlDataAdapter(cmdtxt, Con);        Da.Fill(ds);        Con.Close();        float Total = 0.0f, Tmp;        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)        {            //转换成单精度。也可写成Convert.ToInt32            Tmp = Convert.ToSingle(ds.Tables[0].Rows[i]["Quantity"]);            Total += Tmp;        }        //设置字体,fonttitle为主标题的字体        Font fontlegend = new Font("verdana", 9);        Font fonttitle = new Font("verdana", 10, FontStyle.Bold);        //背景宽        int width = 230;        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 (int i = 0; i < ds.Tables[0].Rows.Count; i++)            colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255))));        //创建一个bitmap实例        Bitmap objbitmap = new Bitmap(width, height);        Graphics objgraphics = Graphics.FromImage(objbitmap);        //画一个白色背景        objgraphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);        //画一个亮黄色背景              objgraphics.FillRectangle(new SolidBrush(Color.Beige), pierect);        //以下为画饼图(有几行row画几个)        float currentdegree = 0.0f;        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)        {            objgraphics.FillPie((SolidBrush)colors[i], pierect, currentdegree,              Convert.ToSingle(ds.Tables[0].Rows[i]["Quantity"]) / Total * 360);            currentdegree += Convert.ToSingle(ds.Tables[0].Rows[i]["Quantity"]) / 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 (int i = 0; i < ds.Tables[0].Rows.Count; i++)        {            objgraphics.FillRectangle((SolidBrush)colors[i], 5, height - legendheight + fontlegend.Height * i + 5, 10, 10);            objgraphics.DrawString(((String)ds.Tables[0].Rows[i]["BookKind"]) + " —— " + Convert.ToString(Convert.ToSingle(ds.Tables[0].Rows[i]["Quantity"]) * 100 / Total).Substring(0, 5) + "%", fontlegend, blackbrush,         20, height - legendheight + fontlegend.Height * i + 1);        }        //图像总的高度-一行字体的高度,即是最底行的一行字体高度(height - fontlegend.Height )        objgraphics.DrawString("图书销售总数:" + Convert.ToString(Total) + "万本", fontlegend, blackbrush, 5, height - fontlegend.Height);        Response.ContentType = "image/Jpeg";        objbitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);        objgraphics.Dispose();        objbitmap.Dispose();    }}
        之前总是想着,自己一定要变得非常好,给家人最好的温情,后来吧,这份心情倒是没变,激情却没了。以前总觉得自己可以很棒,可以到处闯一闯,现在真的有点后悔离家那么远,不在父母的身边。人多的时候,感觉很落寞,人少的时候也落寞。最近心情总是忽阴忽晴,顿时感悟肆意,乱七八糟的,我也不知道我到底想要说什么,反正就是很乏很倦,睡觉会做恶梦,吃饭后还是觉得很饿,前一秒说完喜欢你,后一秒就担心我们将有变坏的关系。。。

0 0
原创粉丝点击