折线统计图

数据库代码同 柱状统计图。

Default.aspx页面代码

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.IO;

using System.Drawing.Drawing2D;

using System.Data;



public partial class LineTJImage : 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 width = 600, height = 400;

        Bitmap image = new Bitmap(width,height);

        Graphics g = Graphics.FromImage(image);

        g.Clear(Color.White);

        //画矩形

        g.FillRectangle(Brushes.WhiteSmoke, new Rectangle(0, 0, width, height));

        LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0,0,width,height),Color.Blue,Color.BlueViolet,1.2f,true);

        Font font = new Font("Arial",9,FontStyle.Regular);

        Font font1 = new Font("宋体",20,FontStyle.Bold);

        //写标题

        g.DrawString("2013网站浏览次数统计",font1,brush,new PointF(120,30));

        Pen pen = new Pen(Color.Blue);

        Pen pen1 = new Pen(Color.Blue,2);

        //画边框

        g.DrawRectangle(pen, 0, 0, width-1, height - 1);

        //设定横向起始

        int x = 100;

        for (int i = 0; i < 11; i++)

        {

            g.DrawLine(pen, x, 80, x, 340);

            x += 40;

        }

        //画y轴线

        int y = 106;

        for (int i = 0; i <9; i++)

        {

            g.DrawLine(pen, 60, y,540,y);

            y += 26;

        }

        g.DrawLine(pen1, 60, y, 540, y);

        //画X轴线条

        g.DrawLine(pen1,x-480,80,x-480,340);

        //X轴

        string[] n = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};

        x = 62;

        for (int i = 0; i < 12; i++)

        {

            g.DrawString(n[i],font,Brushes.Black,new PointF(x,348));

            x += 40;

        }

        g.DrawString("人/月", new Font("宋体",10,FontStyle.Italic), Brushes.Black, new PointF(35, 348));

        //y轴

        string[] m = { "100", "90", "80", "70", "60", "50", "40", "30", "20", "10", "0" };

        y = 85;

        for (int i = 0; i < 11; i++)

        {

            g.DrawString(m[i].ToString(), font, Brushes.Black, 25, y);//设置文字内容以及输出位置

            y = y + 25;

        }

        //将检索出的数据按一定比例绘制到图像中

        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());

            }

        }

        x = 70;

        Point[] points = new Point[12];

        for (int i = 0; i < 12; i++)

        {

            //g.DrawLine(pen

            //g.DrawLine(pen, x, 340 - count[i] * 26 / 10, 20, count[i] * 26 / 10);

            points[i] = new Point(x, 340 - count[i] * 26 / 10);

            x += 40;

        }

        g.DrawLines(pen,points);

        MemoryStream ms = new MemoryStream();

        image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

        Response.ClearContent();

        Response.ContentType = "image/Jpeg";

        Response.BinaryWrite(ms.ToArray());

    }



}
View Code

 

你可能感兴趣的:(折线统计图)