画柱形图的方法

来源:互联网 发布:足球大师 捏脸数据 编辑:程序博客网 时间:2024/05/16 03:50

画柱形图的方法
    public void CImage()
    {
        //定义一个泛型集合,用以存放从数据库中读取的数据
        List<int> iXiaoSH = new List<int>();
        //定义一个泛型集合,用以存放从数据库中读取的月份
        List<string> sMoth = new List<string>();
        //读取Table01数据表中的各条数据,并存放在先前定义的二个集合中
        SqlDataReader dr = BLL.ClassBLL.selectBLL();     
        while (dr.Read())
        {
            iXiaoSH.Add(dr.GetInt32(1));
            sMoth.Add( dr.GetInt32(0).ToString());
        }
        dr.Close();
        //创建一个长度为600,宽带为250的Bitmap实例
        Bitmap bm = new Bitmap(602, 302);
        //由此Bitmap实例创建Graphic实例
        Graphics g;
        g = Graphics.FromImage(bm);
        //用Snow色彩为背景色填充此绘画图面
        g.Clear(Color.Snow);
        //以上是在图01中为下面绘制定位
        g.DrawString(" 上海翰凌信息技术有限公司2002年度销售情况", new Font("宋体", 11), Brushes.Black, new Point(150, 10));
        g.DrawString("单位:mm", new Font("宋体", 9), Brushes.Black, new Point(10, 12));
        int scale = 10;
        //y轴
        g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), 25, 30, 25, 275);
        //x轴
        g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), 25, 275, 580, 275);
        //y轴的刻度及文字
        g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), 25, 275, 20, 275);
        g.DrawString("0", new Font("宋体", 8), Brushes.Black, new Point(5, 272));
        g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), 25, 225, 20, 225);
        g.DrawString("5", new Font("宋体", 8), Brushes.Black, new Point(5, 222));
        g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), 25, 175, 20, 175);
        g.DrawString("10", new Font("宋体", 8), Brushes.Black, new Point(5, 172));
        g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), 25, 125, 20, 125);
        g.DrawString("15", new Font("宋体", 8), Brushes.Black, new Point(5, 122));
        g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), 25, 75, 20, 75);
        g.DrawString("20", new Font("宋体", 8), Brushes.Black, new Point(5, 72));
        g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), 25, 30, 20, 30);
        g.DrawString("25", new Font("宋体", 8), Brushes.Black, new Point(5, 27));
        //循环通过数据绘制柱型图
        for (int y = 0; y < sMoth.Count; y++)
        {
            for (int i = 0; i < iXiaoSH.Count; i++)//i * (bm.Width - 26) / iXiaoSH.Count) + 26
            {
                //绘制Bar图
                g.DrawRectangle(Pens.Black, (i * (580 - 26) / iXiaoSH.Count) + 26, 275 - (iXiaoSH[i] * scale)-1, 580/sMoth.Count , (iXiaoSH[i] * scale)+1);
                //以指定的色彩填充Bar图
                g.FillRectangle(new SolidBrush(Color.Red), (i * (580 - 26) / iXiaoSH.Count) + 26+1, 275 - (iXiaoSH[i] * scale), 580 / sMoth.Count-1, (iXiaoSH[i] * scale));
                //显示Bar图代表的数据
                g.DrawString(iXiaoSH[i].ToString(), new Font("宋体", 9), Brushes.Black, (i * (580 - 26) / iXiaoSH.Count) + 26, 270 - (iXiaoSH[i] * scale)-10);
                //x轴刻度
                g.DrawLine(new Pen(new SolidBrush(Color.Black), 1),  580 / sMoth.Count, 275,  580 / sMoth.Count, 278);
            }
            //x轴文字
            g.DrawString(sMoth[y].ToString(), new Font("宋体", 9), Brushes.Black, (y * (580 - 26) / iXiaoSH.Count) + 21 + 20,280);

        }
        Pen p = new Pen(Color.Black, 2);
        g.DrawRectangle(p, 1, 1, 600, 300);
        bm.Save(Response.OutputStream, ImageFormat.Jpeg);

    }

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liaolezhong/archive/2008/08/20/2801010.aspx

原创粉丝点击