·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 饼形统计图

饼形统计图

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

数据库同 柱状统计图

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Drawing;
using System.Data;
using System.Collections;
using System.IO;

public partial class CakeImage : System.Web.UI.Page
{
    public string connStr = ConfigurationManager.ConnectionStrings["VisitCountConnectionString"].ToString();
    PRotected void Page_Load(object sender, EventArgs e)
    {
        DrawLinearGradient();
    }
    //访问人数统计
    public int Total()
    {
        int result = -1;
        string sql = "select count(1) from VisiteCount";
        SqlConnection conn = new SqlConnection(connStr);
        conn.Open();
        SqlCommand cmd = new SqlCommand(sql, conn);
        result = Convert.ToInt32(cmd.ExecuteScalar());
        cmd.Dispose();
        conn.Close();
        return result;
    }
    //柱形图
    public void DrawLinearGradient()
    {
        int[] count = new int[12];
        string sql = "";
        SqlConnection conn = new SqlConnection(connStr);
        conn.Open();
        SqlDataAdapter da;
        DataSet ds = new DataSet();
        for (int i = 0; i < 12; i++)
        {
            sql = @"select count(1) as count,Month(loginTime) as month from VisiteCount where YEAR(loginTime)=2013 and MONTH(loginTime)=" + (i + 1) + " group by MONTH(loginTime)";
            da = new SqlDataAdapter(sql, conn);
            da.Fill(ds, i.ToString());
            if (ds.Tables[i].Rows.Count == 0)
            {
                count[i] = 0;
            }
            else
            {
                //count[i] = Convert.ToInt32(ds.Tables[i].Rows[0][0].ToString())*100/Total();
                count[i] = Convert.ToInt32(ds.Tables[i].Rows[0][0].ToString());
            }
        }
        //设置字体
        Font fontlegend = new Font("verdana",9);
        Font fonttitle = new Font("verdana", 10, FontStyle.Bold);
        //设置背景宽度
        int width = 230;
        int bufferspace = 15;
        int lengendheight = fontlegend.Height * 13 + bufferspace;//饼图下方分类表表高度
        int titleheight = fonttitle.Height+bufferspace;//标题栏高度
        int height = width+lengendheight+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 < 12; i++)
        { 
            colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(255),rnd.Next(255),rnd.Next(255))));
        }
        //创建一个bitmap
        Bitmap objimage = new Bitmap(width,height);
        Graphics objg = Graphics.FromImage(objimage);
        objg.FillRectangle(Brushes.White, 0, 0, width, height);
        
        //画一个亮色背景
        objg.FillRectangle(new SolidBrush(Color.Beige),pierect);
        //显示标题
        objg.DrawString("2013网站浏览每月比例调查", fonttitle, Brushes.Black, new PointF(32,12));
        //画饼图
        float currentnum = 0.0f;
        for (int i = 0; i < 12; i++)
        {
            objg.FillPie((SolidBrush)colors[i], pierect, currentnum, Convert.ToSingle(count[i]) / Total() * 360);
            currentnum+=Convert.ToSingle(count[i]) / Total() * 360;
        }
        objg.DrawRectangle(new Pen(Color.Blue, 2), 0, height - lengendheight, width, lengendheight);
        string[] n = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
        for (int i = 0; i < 12; i++)
        {
            objg.FillRectangle((SolidBrush)colors[i], 5, height - lengendheight+fontlegend.Height*i+5,10,10);
            string dble = (Convert.ToDouble(count[i]) / Total() * 100).ToString().Substring(0, 4)+"%";
            objg.DrawString(n[i] + "----" + dble, fontlegend, Brushes.Black,20, height - lengendheight+fontlegend.Height*i+1);
        }
        objg.DrawString("2013网络浏览总数:" + Total() + "次", fontlegend, Brushes.Black, 5, height - fontlegend.Height);
        Response.ContentType="image/Jpeg";
        objimage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        objg.Dispose();
        objimage.Dispose();
    }
}
View Code