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

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