http://msdn.microsoft.com/en-us/library/dd456709(v=vs.110).aspx

解决方案 »

  1.   

    折线图统计网站流量示例
     SqlConnection Con;
        SqlCommand Com;
        SqlDataAdapter Da;
        DataSet ds;
        SqlDataReader dr;
        string strconn =ConfigurationManager.AppSettings["conn"];
        protected void Page_Load(object sender, EventArgs e)
        {
            DrawLine();
        }
        //绘制网站流量统计图
        private void DrawLine()
        {
            int height = 397, width = 560;
            System.Drawing.Bitmap image = new System.Drawing.Bitmap(width, height);
            Graphics g = Graphics.FromImage(image);
            //清空图片背景色
            g.Clear(Color.White);        Font font = new System.Drawing.Font("Arial", 9, FontStyle.Regular);
            Font font1 = new System.Drawing.Font("宋体", 20, FontStyle.Regular);
            Font font2 = new System.Drawing.Font("Arial", 8, FontStyle.Regular);        System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Blue, 1.2f, true);
            g.FillRectangle(Brushes.AliceBlue, 0, 0, width, height);
            Brush brush1 = new SolidBrush(Color.Blue);
            Brush brush2 = new SolidBrush(Color.SaddleBrown);        string str = "SELECT * FROM 访问量表 WHERE ShowYear=2007";
            Con = new SqlConnection(strconn);
            Con.Open();
            Com = new SqlCommand(str, Con);
            dr = Com.ExecuteReader();
            dr.Read();
            if (dr.HasRows)
            {
                g.DrawString("2007年各月份网站访问人数", font1, brush1, new PointF(130, 30));
            }
            dr.Close();
            //画图片的边框线
            g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1);        Pen mypen = new Pen(brush, 1);
            Pen mypen2 = new Pen(Color.Red, 2);
            //绘制线条
            //绘制纵向线条
            int x = 60;
            for (int i = 0; i < 12; i++)
            {
                g.DrawLine(mypen, x, 80, x, 340);
                x = x + 40;
            }
            Pen mypen1 = new Pen(Color.Blue, 2);
            g.DrawLine(mypen1, x - 480, 80, x - 480, 340);        //绘制横向线条
            int y = 106;
            for (int i = 0; i < 9; i++)
            {
                g.DrawLine(mypen, 60, y, 540, y);
                y = y + 26;
            }
            g.DrawLine(mypen1, 60, y, 540, y);        //x轴
            String[] n = {"  一月", "  二月", "  三月", "  四月", "  五月", "  六月", "  七月",
                         "  八月", "  九月", "  十月", "十一月", "十二月"};
            x = 35;
            for (int i = 0; i < 12; i++)
            {
                g.DrawString(n[i].ToString(), font, Brushes.Red, x, 348); //设置文字内容及输出位置
                x = x + 40;
            }        //y轴
            String[] m = {"4500人", "4000人", "3500人", "3000人", "2500人", "2000人", "1500人", "1000人",
                         "500人"};
            y = 100;
            for (int i = 0; i < 9; i++)
            {
                g.DrawString(m[i].ToString(), font, Brushes.Red, 10, y); //设置文字内容及输出位置
                y = y + 26;
            }//CodeGo.net/        int[] Count = new int[12];
            string[] NumChr = new string[12];
            Da = new SqlDataAdapter();
            Da.SelectCommand = Com;
            ds = new DataSet();
            Da.Fill(ds);
            for (int i = 0; i < 12; i++)
            {
                NumChr[i] = ds.Tables[0].Rows[0][i + 1].ToString();
            }
            for (int j = 0; j < 12; j++)
            {
                Count[j] = Convert.ToInt32(NumChr[j].ToString()) * 26 / 500;
            }        //显示折线效果
            SolidBrush mybrush = new SolidBrush(Color.Red);
            Point[] points = new Point[12];
            points[0].X = 60; points[0].Y = 340 - Count[0];
            points[1].X = 100; points[1].Y = 340 - Count[1];
            points[2].X = 140; points[2].Y = 340 - Count[2];
            points[3].X = 180; points[3].Y = 340 - Count[3];
            points[4].X = 220; points[4].Y = 340 - Count[4];
            points[5].X = 260; points[5].Y = 340 - Count[5];
            points[6].X = 300; points[6].Y = 340 - Count[6];
            points[7].X = 340; points[7].Y = 340 - Count[7];
            points[8].X = 380; points[8].Y = 340 - Count[8];
            points[9].X = 420; points[9].Y = 340 - Count[9];
            points[10].X = 460; points[10].Y = 340 - Count[10];
            points[11].X = 500; points[11].Y = 340 - Count[11];
            g.DrawLines(mypen2, points);  //绘制折线
            image.Save(Server.MapPath("网站流量统计图.gif"));
            g.Dispose();
            image.Dispose();
            Image1.ImageUrl = "~/网站流量统计图.gif";
        }