asp.net|折线图|柱状图using System; using System.Collections;
using System.Collections; using System.ComponentModel;
using System.ComponentModel; using System.Data;
using System.Data; using System.Drawing;
using System.Drawing; using System.Web;
using System.Web; using System.Web.SessionState;
using System.Web.SessionState; using System.Web.UI;
using System.Web.UI; using System.Web.UI.WebControls;
using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;
using System.Web.UI.HtmlControls; using System.Drawing.Imaging;
using System.Drawing.Imaging; using System.Drawing.Drawing2D;
using System.Drawing.Drawing2D;
 namespace commonu
namespace commonu

 {
{
 /**//// <summary>
    /**//// <summary> /// WebForm2 的摘要说明。
    /// WebForm2 的摘要说明。 /// </summary>
    /// </summary> public class WebForm2 : System.Web.UI.Page
    public class WebForm2 : System.Web.UI.Page
 
     {
{ 
     private void Page_Load(object sender, System.EventArgs e)
        private void Page_Load(object sender, System.EventArgs e)
 
         {
{

 /**//*自写编码*/
            /**//*自写编码*/ int ImgWidth=600;        //1.[总宽度]            ***图宽度
            int ImgWidth=600;        //1.[总宽度]            ***图宽度    int ImgHeight=300;        //2.[总高度]            ***图高度
            int ImgHeight=300;        //2.[总高度]            ***图高度         int ItemNum=1;            //3.[项目数量]            ***图表划分的块
            int ItemNum=1;            //3.[项目数量]            ***图表划分的块             int ChildNum=6;            //4.[块数]                ***大块中划分的子项的数量
            int ChildNum=6;            //4.[块数]                ***大块中划分的子项的数量 float ChildRate=0.6f;    //5.[各块总占空间比率]
            float ChildRate=0.6f;    //5.[各块总占空间比率] //int ChildSpace=15;        //6.[各块间的间距]
            //int ChildSpace=15;        //6.[各块间的间距] int ChartLeft=80;        //7.[图表左边距]        ***图表距图的左边距离
            int ChartLeft=80;        //7.[图表左边距]        ***图表距图的左边距离 int ChartRight=50;        //8.[图表右边距]        ***图表距图的右边距离
            int ChartRight=50;        //8.[图表右边距]        ***图表距图的右边距离 int ChartTop=50;        //9.[图表顶边距]        ***图表距图顶边距离
            int ChartTop=50;        //9.[图表顶边距]        ***图表距图顶边距离 int ChartBottom=50;        //10.[图表底边距]        ***图表距图底边距离
            int ChartBottom=50;        //10.[图表底边距]        ***图表距图底边距离 int YMaxValue=5000;        //11.[纵坐标标尺最大值]    ***纵坐标标尺的最大值
            int YMaxValue=5000;        //11.[纵坐标标尺最大值]    ***纵坐标标尺的最大值 int YItemNum=10;        //12.[纵坐标标尺段数]    ***纵坐标标尺的段数
            int YItemNum=10;        //12.[纵坐标标尺段数]    ***纵坐标标尺的段数 int YTop=15;            //13.[距纵轴顶端间隔]
            int YTop=15;            //13.[距纵轴顶端间隔] int YStrStart=35;        //14.[纵坐标标尺文字起始X坐标]
            int YStrStart=35;        //14.[纵坐标标尺文字起始X坐标] int XRight=15;            //15.[距横轴右端间隔]
            int XRight=15;            //15.[距横轴右端间隔] int XStrStart=20;        //16.[横坐标标尺文字起始Y坐标]
            int XStrStart=20;        //16.[横坐标标尺文字起始Y坐标] 
            
 //[图表总宽度]=[总宽度]-[图表左边距]-[图表右边距]-[距横轴右端间隔]
            //[图表总宽度]=[总宽度]-[图表左边距]-[图表右边距]-[距横轴右端间隔] int chartwidth=ImgWidth-ChartLeft-ChartRight-XRight;
            int chartwidth=ImgWidth-ChartLeft-ChartRight-XRight; //[项目宽度]=[图表总宽度]/[项目数量]
            //[项目宽度]=[图表总宽度]/[项目数量] int itemwidth=chartwidth/ItemNum;
            int itemwidth=chartwidth/ItemNum; //[各块总占空间比率的实际宽度]=[项目宽度]*[各块总占空间比率]
            //[各块总占空间比率的实际宽度]=[项目宽度]*[各块总占空间比率] int factwidth=Convert.ToInt32(Math.Floor(itemwidth*ChildRate));
            int factwidth=Convert.ToInt32(Math.Floor(itemwidth*ChildRate)); //[各块矩形宽度]=[各块总占空间比率的实际宽度]/[块数]
            //[各块矩形宽度]=[各块总占空间比率的实际宽度]/[块数] int rectanglewidth=factwidth/ChildNum;
            int rectanglewidth=factwidth/ChildNum; //[各块间的间距]=([项目宽度]-[各块总占空间比率的实际宽度])/([块数]+1)
            //[各块间的间距]=([项目宽度]-[各块总占空间比率的实际宽度])/([块数]+1) int childspace=Convert.ToInt32(Math.Floor((itemwidth-factwidth)/(ChildNum+1)));
            int childspace=Convert.ToInt32(Math.Floor((itemwidth-factwidth)/(ChildNum+1)));
 Graphics objGps;//建立画板对象
            Graphics objGps;//建立画板对象 Bitmap objBitMap = new Bitmap(ImgWidth,ImgHeight);//建立位图对象
            Bitmap objBitMap = new Bitmap(ImgWidth,ImgHeight);//建立位图对象 objGps = Graphics.FromImage(objBitMap);//根据位图对象建立画板对象
            objGps = Graphics.FromImage(objBitMap);//根据位图对象建立画板对象 objGps.Clear(Color.White);//设置画板对象的背景色
            objGps.Clear(Color.White);//设置画板对象的背景色



 int[] arrValues=
            int[] arrValues= {0,0,0,0,0,0};//数据数组
{0,0,0,0,0,0};//数据数组 //arrValues[0]=500;
            //arrValues[0]=500; arrValues[0]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*500/YMaxValue));    //处理显示数据,进行图表数值对应
            arrValues[0]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*500/YMaxValue));    //处理显示数据,进行图表数值对应 arrValues[1]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*700/YMaxValue));
            arrValues[1]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*700/YMaxValue)); arrValues[2]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*900/YMaxValue));
            arrValues[2]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*900/YMaxValue)); arrValues[3]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*1000/YMaxValue));
            arrValues[3]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*1000/YMaxValue)); arrValues[4]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*1400/YMaxValue));
            arrValues[4]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*1400/YMaxValue)); arrValues[5]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*2200/YMaxValue));
            arrValues[5]=Convert.ToInt32(Math.Floor((ImgHeight-ChartBottom-ChartTop-YTop)*2200/YMaxValue));
 string[] arrValueNames=
            string[] arrValueNames= {"0","0","0","0","0","0","0","0","0","0"};//月份
{"0","0","0","0","0","0","0","0","0","0"};//月份
 arrValueNames[0] = "一月";
            arrValueNames[0] = "一月"; arrValueNames[1]="二月";
            arrValueNames[1]="二月"; arrValueNames[2] = "三月";
            arrValueNames[2] = "三月"; arrValueNames[3]="四月";
            arrValueNames[3]="四月"; arrValueNames[4]="五月";
            arrValueNames[4]="五月"; arrValueNames[5]="六月";
            arrValueNames[5]="六月"; arrValueNames[6] = "七月";
            arrValueNames[6] = "七月"; arrValueNames[7]="八月";
            arrValueNames[7]="八月"; arrValueNames[8]="九月";
            arrValueNames[8]="九月"; arrValueNames[9]="十月";
            arrValueNames[9]="十月";
 //得出矩形宽度,和画图X轴位置
            //得出矩形宽度,和画图X轴位置
 //[项目宽度]=[总宽度]/[项目数量]
            //[项目宽度]=[总宽度]/[项目数量] //======[各块总占空间比率]=([各块矩形宽度]+[各块间的间距])/[项目宽度]
            //======[各块总占空间比率]=([各块矩形宽度]+[各块间的间距])/[项目宽度] //[各块总占空间比率的实际宽度]=[项目宽度]*[各块总占空间比率]
            //[各块总占空间比率的实际宽度]=[项目宽度]*[各块总占空间比率] //[各块矩形宽度]=([各块总占空间比率的实际宽度]-[各块间的间距]*([块数]))/[块数]
            //[各块矩形宽度]=([各块总占空间比率的实际宽度]-[各块间的间距]*([块数]))/[块数] //[一边空余空间宽度]=([项目宽度]-[各块所占空间比率的总宽度])/2
            //[一边空余空间宽度]=([项目宽度]-[各块所占空间比率的总宽度])/2  
 System.Drawing.Point[] pi=new Point[arrValues.Length];    //定义折线点的对象数组
            System.Drawing.Point[] pi=new Point[arrValues.Length];    //定义折线点的对象数组 System.Drawing.Point[] pit=new Point[3];    //定义坐标三角点的对象数组
            System.Drawing.Point[] pit=new Point[3];    //定义坐标三角点的对象数组 System.Drawing.Pen pe=new Pen(new SolidBrush(GetColor(7)),1f);    //定义画直线的对象
            System.Drawing.Pen pe=new Pen(new SolidBrush(GetColor(7)),1f);    //定义画直线的对象 //画纵轴
            //画纵轴 objGps.DrawLine(pe,new Point(ChartLeft,ImgHeight-ChartBottom),new Point(ChartLeft,ChartTop));
            objGps.DrawLine(pe,new Point(ChartLeft,ImgHeight-ChartBottom),new Point(ChartLeft,ChartTop)); //画纵轴终点箭头
            //画纵轴终点箭头 pit[0].X=ImgWidth-ChartRight;    //确定三角形三点的位置
            pit[0].X=ImgWidth-ChartRight;    //确定三角形三点的位置 pit[0].Y=ImgHeight-ChartBottom-4;
            pit[0].Y=ImgHeight-ChartBottom-4; pit[1].X=ImgWidth-ChartRight;
            pit[1].X=ImgWidth-ChartRight; pit[1].Y=ImgHeight-ChartBottom+4;
            pit[1].Y=ImgHeight-ChartBottom+4; pit[2].X=ImgWidth-ChartRight+10;
            pit[2].X=ImgWidth-ChartRight+10; pit[2].Y=ImgHeight-ChartBottom;
            pit[2].Y=ImgHeight-ChartBottom; objGps.FillPolygon(new SolidBrush(GetColor(7)),pit);
            objGps.FillPolygon(new SolidBrush(GetColor(7)),pit); //画纵轴标尺和标尺描述
            //画纵轴标尺和标尺描述 for(int i=1;i<=YItemNum;i++)
            for(int i=1;i<=YItemNum;i++)
 
             {
{ //画标尺
                //画标尺 objGps.DrawLine(pe,new PointF(ChartLeft,ImgHeight-ChartBottom-(ImgHeight-ChartBottom-ChartTop-YTop)/YItemNum*i),new PointF(ChartLeft-5,ImgHeight-ChartBottom-(ImgHeight-ChartBottom-ChartTop-YTop)/YItemNum*i));
                objGps.DrawLine(pe,new PointF(ChartLeft,ImgHeight-ChartBottom-(ImgHeight-ChartBottom-ChartTop-YTop)/YItemNum*i),new PointF(ChartLeft-5,ImgHeight-ChartBottom-(ImgHeight-ChartBottom-ChartTop-YTop)/YItemNum*i)); //画描述
                //画描述 objGps.DrawString(arrValueNames[i-1].ToString(),new Font("宋体",10),Brushes.Black,new Point(YStrStart,ImgHeight-ChartBottom-(ImgHeight-ChartBottom-ChartTop-YTop)/YItemNum*i-5));
                objGps.DrawString(arrValueNames[i-1].ToString(),new Font("宋体",10),Brushes.Black,new Point(YStrStart,ImgHeight-ChartBottom-(ImgHeight-ChartBottom-ChartTop-YTop)/YItemNum*i-5)); }
            } //画横轴
            //画横轴 objGps.DrawLine(pe,new Point(ChartLeft,ImgHeight-ChartBottom),new Point(ImgWidth-ChartRight,ImgHeight-ChartBottom));
            objGps.DrawLine(pe,new Point(ChartLeft,ImgHeight-ChartBottom),new Point(ImgWidth-ChartRight,ImgHeight-ChartBottom)); //画横轴终点箭头
            //画横轴终点箭头 pit[0].X=ChartLeft-4;    //确定三角形三点的位置
            pit[0].X=ChartLeft-4;    //确定三角形三点的位置 pit[0].Y=ChartTop;
            pit[0].Y=ChartTop; pit[1].X=ChartLeft+4;
            pit[1].X=ChartLeft+4; pit[1].Y=ChartTop;
            pit[1].Y=ChartTop; pit[2].X=ChartLeft;
            pit[2].X=ChartLeft; pit[2].Y=ChartTop-10;
            pit[2].Y=ChartTop-10; objGps.FillPolygon(new SolidBrush(GetColor(7)),pit);
            objGps.FillPolygon(new SolidBrush(GetColor(7)),pit); //画横轴标尺和标尺描述
            //画横轴标尺和标尺描述 for(int i=1;i<=ItemNum;i++)
            for(int i=1;i<=ItemNum;i++)
 
             {
{ objGps.DrawLine(pe,new PointF(ChartLeft+itemwidth*i,ImgHeight-ChartBottom),new PointF(ChartLeft+itemwidth*i,ImgHeight-ChartBottom+5));
                objGps.DrawLine(pe,new PointF(ChartLeft+itemwidth*i,ImgHeight-ChartBottom),new PointF(ChartLeft+itemwidth*i,ImgHeight-ChartBottom+5)); objGps.DrawString(arrValueNames[i-1].ToString(),new Font("宋体",10),Brushes.Black,new Point(ChartLeft+childspace+itemwidth*(i-1),ImgHeight-ChartBottom+XStrStart));
                objGps.DrawString(arrValueNames[i-1].ToString(),new Font("宋体",10),Brushes.Black,new Point(ChartLeft+childspace+itemwidth*(i-1),ImgHeight-ChartBottom+XStrStart)); }
            }
 for(int j = 0;j<arrValues.Length;j++)//画矩形图和折线图
            for(int j = 0;j<arrValues.Length;j++)//画矩形图和折线图
 
             {
{ objGps.FillRectangle(new SolidBrush(GetColor(j)),(j*(childspace+rectanglewidth))+childspace+ChartLeft,ImgHeight-ChartBottom-arrValues[j],rectanglewidth,arrValues[j]);
                objGps.FillRectangle(new SolidBrush(GetColor(j)),(j*(childspace+rectanglewidth))+childspace+ChartLeft,ImgHeight-ChartBottom-arrValues[j],rectanglewidth,arrValues[j]); objGps.DrawRectangle(Pens.Black,(j*(childspace+rectanglewidth))+childspace+ChartLeft,ImgHeight-ChartBottom-arrValues[j],rectanglewidth,arrValues[j]);
                objGps.DrawRectangle(Pens.Black,(j*(childspace+rectanglewidth))+childspace+ChartLeft,ImgHeight-ChartBottom-arrValues[j],rectanglewidth,arrValues[j]); pi[j].X=(j*(childspace+rectanglewidth))+childspace+ChartLeft;
                pi[j].X=(j*(childspace+rectanglewidth))+childspace+ChartLeft; pi[j].Y=ImgHeight-ChartBottom-arrValues[j];
                pi[j].Y=ImgHeight-ChartBottom-arrValues[j]; pe.SetLineCap(System.Drawing.Drawing2D.LineCap.RoundAnchor,System.Drawing.Drawing2D.LineCap.RoundAnchor,System.Drawing.Drawing2D.DashCap.Round);
                pe.SetLineCap(System.Drawing.Drawing2D.LineCap.RoundAnchor,System.Drawing.Drawing2D.LineCap.RoundAnchor,System.Drawing.Drawing2D.DashCap.Round); if(j>0)
                if(j>0)
 
                 {
{ objGps.DrawLine(pe,pi[j-1],pi[j]);
                    objGps.DrawLine(pe,pi[j-1],pi[j]); }
                } }
            }
 objBitMap.Save(Response.OutputStream,ImageFormat.Gif);//该位图对象以"GIF"格式输出
            objBitMap.Save(Response.OutputStream,ImageFormat.Gif);//该位图对象以"GIF"格式输出 }
        }
 /**//// <param name="itemIndex">系统定义的颜色,有效值0到7,分别为(Blue,Yellow,Red,Orange,Purple,Brown,Pink,Black)</param>
/**//// <param name="itemIndex">系统定义的颜色,有效值0到7,分别为(Blue,Yellow,Red,Orange,Purple,Brown,Pink,Black)</param> /// <returns></returns>
/// <returns></returns> public static Color GetColor(int itemIndex)
        public static Color GetColor(int itemIndex)
 
         {
{ Color objColor = new Color();
            Color objColor = new Color(); switch(itemIndex)
            switch(itemIndex)
 
             {
{ case 0:
                case 0: objColor = Color.Blue;
                    objColor = Color.Blue; break;
                    break; case 1:
                case 1: objColor = Color.Yellow;
                    objColor = Color.Yellow; break;
                    break; case 2:
                case 2: objColor = Color.Red;
                    objColor = Color.Red; break;
                    break; case 3:
                case 3: objColor = Color.Orange;
                    objColor = Color.Orange; break;
                    break; case 4:
                case 4: objColor = Color.Purple;
                    objColor = Color.Purple; break;
                    break; case 5:
                case 5: objColor = Color.Brown;
                    objColor = Color.Brown; break;
                    break; case 6:
                case 6: objColor = Color.Pink;
                    objColor = Color.Pink; break;
                    break; default:
                default: objColor = Color.Black;
                    objColor = Color.Black; break;
                    break; }
            }
 return objColor;
            return objColor; }
        }

 /**//// <param name="red">自定义颜色红色分量值,有效值0到255</param>
/**//// <param name="red">自定义颜色红色分量值,有效值0到255</param> /// <param name="green">自定义颜色绿色分量值,有效值0到255</param>
/// <param name="green">自定义颜色绿色分量值,有效值0到255</param> /// <param name="blue">自定义颜色蓝色分量值,有效值0到255</param>
/// <param name="blue">自定义颜色蓝色分量值,有效值0到255</param> /// <returns></returns>
/// <returns></returns> public static Color GetColor(int red,int green,int blue)
        public static Color GetColor(int red,int green,int blue)
 
         {
{ Color objColor = new Color();
            Color objColor = new Color(); objColor = Color.FromArgb(red,green,blue);
            objColor = Color.FromArgb(red,green,blue); return objColor;
            return objColor; }
        }
			
ASP.NET画柱状图和折线图
                    80酷酷网    80kuku.com 
       
  
 
 
  
