Color Weblog

学习任何东西都没有捷径的,汗水、态度、方法才是需要考虑的。

博客园 首页 新随笔 联系 订阅 管理


using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.Drawing.Drawing2D; 
using System.Drawing.Text; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 

namespace Plarm_Test 

   /// <summary> 
   /// chart 的摘要说明。 
   /// </summary> 
   public class chart : System.Web.UI.Page 
   { 
    
      private void Page_Load(object sender, System.EventArgs e) 
      { 
         // 在此处放置用户代码以初始化页面 
         ChartColumn mChart = new ChartColumn(); 
         mChart.AddValue(910,"一月","blue"); 
         mChart.AddValue(400,"二月","orange"); 
         mChart.AddValue(500,"三月","red"); 
         mChart.AddValue(300,"四月","green"); 
         mChart.AddValue(700,"五月","black"); 
         HttpContext.Current.Response.Write(mChart.SaveChart()); 
         HttpContext.Current.Response.Write("<hr size=1><img src='http://10.0.0.6/Plarm_Test/1.jpeg' alt='' Border=0>"); 
      } 

      class ChartColumn 
      { 
         private int cNum,iCount,iSum; 

         Single maxData; 
         public int Height,Width; 
         public string FileName,s; 
         private Object[,] cContent=new Object[5,30]; 
         public void AddValue(long vnumber,string vtext,string vcolor) 
         { 
            if(iCount++>=20) 
               return; 
            cContent[1,iCount]=vnumber; 
            cContent[2,iCount]=vtext; 
            cContent[3,iCount]=vcolor; 
            cNum = cNum + Convert.ToInt32(vnumber); 
         } 

         public long GetCount() 
         { 
            return iCount; 
         } 

         public long GetNum() 
         { 
            return cNum; 
         } 

         public string SaveChart() 
         { 
            //初始化对象 
            if(Height<60) 
               Height=300; 
            if(Width<100) 
               Width=400; 
            Bitmap b = new Bitmap(Width,Height,PixelFormat.Format16bppRgb555); 
            Graphics g = Graphics.FromImage(b); 
            SolidBrush ibrush = new SolidBrush(Color.Blue); 
            int i,iSize; 
            Single i1,i2,i3,i4; 
            g.Clear(Color.AliceBlue); 
            iSum=0; 
            for(i=1;i<=iCount;i++) 
               if (Convert.ToSingle(cContent[1,i]) > maxData) 
                  maxData=Convert.ToSingle(cContent[1,i]); 
            maxData=Convert.ToSingle(Math.Round(Convert.ToSingle(maxData)*1.15/100)*100); 
            Drawback(g,0,0); 
            i1=(Width-80)/5; //定义柱条数 
            i3=i1/6; //定义柱宽 
            for(i=1;i<=iCount;i++) 
            { 
               i2=Convert.ToInt64(cContent[1,i]) / Convert.ToSingle(maxData) * (Height-80); 
               i4=Height-64-i2; 
               iSize=Convert.ToInt32(System.Math.Round(Convert.ToDouble(Convert.ToDouble(cContent[1,i])*360/cNum))); 
               DrawColumn(g,50+(i-1)*i1+i3,i4,i2,2*i3,cContent[3,i].ToString(),cContent[2,i].ToString()); 
               iSum=iSum+iSize; 
               s+="
"+cContent[2,i].ToString()+":"+cContent[1,i].ToString(); 
            } 
            FileName="E:\\xiaozhen\\ASP.NET\\Plarm_Test\\1.jpeg"; 
            b.Save(FileName,ImageFormat.Jpeg); 
            b.Dispose(); 
            return s; 
         } 

         private void Drawback(Graphics g,int x1,int y1) 
         { 
            int i; 
            Single[] dashValues={3,2,3,2}; 
            Pen blackPen1=new Pen(Color.Black,1); 
            Single h1; 
            StringFormat Salign=new StringFormat(); 
            Salign.Alignment=StringAlignment.Center; 
            blackPen1.DashPattern=dashValues; 
            Pen blackPen2=new Pen(Color.Black,1); 
            g.DrawRectangle(blackPen1,46,10,Width-60,Height-80); 
            g.DrawRectangle(blackPen1,40,16,Width-60,Height-80); 
            g.DrawRectangle(blackPen2,30,Height-64,Width-50,1); 
            g.DrawRectangle(blackPen2,40,16,1,Height-80); 
            g.DrawLine(blackPen2,40,16,46,10); //左上 
            g.DrawLine(blackPen2,40,Height-64,46,Height-70); //左下 
                g.DrawLine(blackPen2,Width-20,16,Width-14,10); //右上 
            g.DrawLine(blackPen2,Width-20,Height-64,Width-14,Height-70); //右下 
            h1=(Height-80) / 20; 
            for(i=0;i<=20;i++) 
            { 
               if(i%5==0) 
               { 
                  g.DrawString(Convert.ToString(Convert.ToInt32((20-i)*maxData/20)),new Font("Arial",10),Brushes.Black,15,i*h1+9,Salign); 
                  g.DrawLine(blackPen2,30,i*h1+16,40,i*h1+16); 
               } 
               else 
               { 
                  g.DrawLine(blackPen2,35,i*h1+16,40,i*h1+16); 
               } 

            } 
         } 
          
         private void DrawColumn(Graphics g,float x1,float y1,float h1,float w1,string c1,string t1) 
         { 
            LinearGradientBrush LinGrBrush = new LinearGradientBrush(new Point(10,Convert.ToInt32(y1-100)),new Point(10,Convert.ToInt32(y1+h1+100)),Color.FromArgb(255,255,255,255),Color.FromName(c1)); 
            SolidBrush lbrush1 = new SolidBrush(Color.FromName(c1)); 
            PointF Point1 = new PointF(x1,y1); 
            PointF Point4 = new PointF(x1+w1,y1); 
            PointF Point2 = new PointF(x1+6,y1-6); 
            PointF Point3 = new PointF(x1+6+w1,y1-6); 
            PointF[] CurvePoints1={Point1,Point2,Point3,Point4}; 
            PointF Point5 = new PointF(x1+w1,y1); 
            PointF Point6 = new PointF(x1+w1+6,y1-6); 
            PointF Point7 = new PointF(x1+w1+6,y1+h1-6); 
            PointF Point8 = new PointF(x1+w1,y1+h1); 
            PointF[] CurvePoints2 = {Point5,Point6,Point7,Point8}; 
            g.FillPolygon(lbrush1,CurvePoints1); 
            g.FillPolygon(lbrush1,CurvePoints2); 
            g.FillRectangle(LinGrBrush,x1,y1,w1,h1); 
            StringFormat Salign=new StringFormat(); 
            Salign.Alignment = StringAlignment.Center; 
            g.DrawString(t1,new Font("Arial",10),Brushes.Black,x1+20,y1+h1+10,Salign); 
         } 

   } 

      #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 
   } 


我一直认为         public long GetCount() 
         { 
            return iCount; 
         } 

         public long GetNum() 
         { 
            return cNum; 
         } 
没有用。还有iSum变量也没用 
posted on 2004-04-06 15:49  popcode  阅读(1443)  评论(0)    收藏  举报