Web頁面中柱狀統計圖
//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