Web页面中柱状统计图

Web页面中柱状统计图

//部分代码参考了http://www.yesky.com/20030324/1658705_2.shtml

//Page_Load事件如果改成从数据库中获取数据,就能根据数据库中的数据进行绘图了

public class bitmappicture : System.Web.UI.Page
 {
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面

   //标题

  string title="年度销售业绩统计";
  //数据数组

  float []Arr={3,5,6,11,33,16,10,8,21,19,11,20};   

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

  //类别数组

  string ARR="一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月";

  string []Arr1=ARR.Split(',');

  barpicture(title,Arr,Arr1);  //调用绘图函数 
  }

 

  //函数中的三参数分别为:标题,数据数组,类别数组
  private void barpicture(string title,float []Arr,string []Arr1)
  {
   //显示屏幕分辨率
   int ScreenWidth=800;
   int ScreenHeight=600;
   int XX=100;//Y轴竖直位置 直线y=XX
   int YY=ScreenHeight-XX;//X轴水平位置 直线x=YY
   int XD=50;//X轴步距
   int YD=10;//Y轴步距
   int WW=25;//柱形宽度
   int KD=YD;//Y轴上的最小刻度值,为精确标刻必须同Y轴步距相关
   

  //创建一个宽度为ScreenWidth,高度为ScreenHeight的Bitmap实例

   Bitmap bm = new Bitmap(ScreenWidth,ScreenHeight);

  //由此Bitmap实例创建Graphic实例  

   Graphics g = Graphics.FromImage(bm);

  g.Clear(Color.Snow);

   g.DrawString(title,new Font("宋体",20),Brushes.Blue,ScreenWidth/2-80,80);//绘制标题
   
   //绘制座标
   Pen p1=new Pen(Brushes.Black,3);//定义绘制座标的画笔
   g.DrawLine(p1,new Point(XX,YY),new Point(ScreenWidth-XX,YY));//绘制X轴
   g.DrawLine(p1,new Point(XX,XX),new Point(XX,YY));//绘制Y轴
   //绘制Y轴上的刻度
   for(int j=0;j<(YY-XX)/KD;j++)
   {
    if(j%3==0) //避免Y轴上刻度太密,所以每3个标一个刻度
    {
     g.DrawLine(p1,new Point(XX,YY-j*KD),new Point(XX+10,YY-j*KD));//刻度短划线
     g.DrawString(j.ToString(),new Font("Arial",15,FontStyle.Regular),Brushes.Black,XX-30,YY-10-j*KD);

   //刻度值
    }
   }
   //绘制X轴上的标识和柱形所表示的数据
   for(int i=0;i<Arr.Length;i++)
   {    
    g.DrawRectangle(new Pen( GetColor(i)),XX+20+i*XD,YY-Arr[i]*YD,WW,Arr[i]*YD); //绘制柱形 
    g.FillRectangle(new SolidBrush( GetColor(i)),XX+20+i*XD,YY-Arr[i]*YD,WW,Arr[i]*YD); //用颜色填充柱形
    g.DrawString(Arr[i].ToString(),new Font("Arial",20),Brushes.Black,XX+20+i*XD,YY-Arr[i]*YD-40);//标识数据
    g.DrawString(Arr1[i],new Font("Arial",15),Brushes.Black,XX+5+i*XD,YY+30);//标识每个柱状对应的月份
   }

   Pen p=new Pen(Brushes.Black,3);//绘制边框的画笔
   g.DrawRectangle(p,20,20,ScreenWidth-40,ScreenHeight-40); //绘制边框
   bm.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

  }

 

  //颜色函数
  private Color GetColor ( int itemIndex )
  {
    Color MyColor ;
    int i = itemIndex ;
    switch ( i )
    {
     case 0 :
      MyColor = Color.Silver ;
      return MyColor ;
     case 1 :
      MyColor = Color.Red ;
      return MyColor ;
     case 2 :
      MyColor = Color.Yellow ;
      return MyColor ;
     case 3 :
      MyColor = Color.Peru ;
      return MyColor ;
     case 4 :
      MyColor = Color.Orange ;
      return MyColor ;
     case 5 :
      MyColor = Color.Coral ;
      return MyColor ;
     case 6:
      MyColor = Color.Gray ;
      return MyColor ;
     case 7:
      MyColor = Color.Maroon ;
      return MyColor ;
     case 8:
      MyColor = Color.SeaGreen ;
      return MyColor ;
     case 9:
      MyColor = Color.Teal ;
      return MyColor ;
     case 10:
      MyColor = Color.RoyalBlue ;
      return MyColor ;
     case 11:
      MyColor = Color.BurlyWood ;
      return MyColor ;
     case 12:
      MyColor = Color.Chartreuse ;
      return MyColor ;
     default:
      MyColor = Color.Green ;
      return MyColor ;
    }
  }


  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
 }

原贴:http://lcszndx.bokee.com/viewdiary.11080075.html 作者:

相关贴子:

http://www.yesky.com/20030324/1658705_2.shtml

http://www.yesky.com/20020627/1617851.shtml



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1046125

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章