画柱形图的方法
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