zoukankan      html  css  js  c++  java
  • gdi+实现多种统计图表(饼状,折线,柱状)支持负从标

    using System;
    using System.Web.UI;
    using System.Data;
    using System.Web.UI.WebControls;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Web;
    using System.ComponentModel;
    using System.Collections ;

    namespace Tom.Control
    {
            [ToolboxData(
    "<{0}:Columniation runat=server></{0}:Columniation>")]
        
    public class Columniation: System.Web.UI.WebControls.WebControl
        
    {  
            
    private const int _colorLimit = 12;  //颜色列表
           private Color[] _color = 
                

                    Color.Chocolate,
                    Color.YellowGreen,
                    Color.Olive,
                    Color.DarkKhaki,
                    Color.Sienna,
                    Color.PaleGoldenrod,
                    Color.Peru,
                    Color.Tan,
                    Color.Khaki,
                    Color.DarkGoldenrod,
                    Color.Maroon,
                    Color.OliveDrab
                }
    ;

            
            
            
            
    private DataTable items;//列表项名称和值
           

            
    private string text="数据";
            
    private string datastd="标准值";
            
    private string data="实时数据";


            
    int kds=10//刻度数
            float kddw=100;  //没刻度大小

            
    int zmheight=500//真个图区高
            int zmwidth=740;  //真个图区宽

            
    int height=400;//呈现区高
            int width=730;
            
    int cxtop=30;//呈现区距顶距离
            int cxleft=30;//呈现区左边距离

            Color bzlink
    =Color.Black;//标准线颜色
        

            
    int Chart_Flag=1;
            Bitmap bm ;

            
    int Displacement =0//获取负坐标刻度数

          
        

            [Bindable(
    true),
            Category(
    "Appearance"),
            DefaultValue(
    "")]
            
    public string Text
            
    {
                
    get
                
    {
                    
    return text;
                }


                
    set
                
    {
                    text 
    = value;
                }

            }

            
            [Bindable(
    true),
            Category(
    "Appearance"),
            DefaultValue(
    "")]
            
    public string DataStdName
            
    {
                
    get
                
    {
                    
    return datastd;
                }


                
    set
                
    {
                    datastd 
    = value;
                }

            }


            [Bindable(
    true),
            Category(
    "Appearance"),
            DefaultValue(
    "")]
            
    public string DataName
            
    {
                
    get
                
    {
                    
    return data;
                }


                
    set
                
    {
                    data 
    = value;
                }

            }


            
    /// <summary>
            
    /// 需要呈现的数据
            
    /// </summary>

            public DataTable Items
            
    {
                
    set
                
    {items=value;}
            }


            
    /// <summary>
            
    /// 需要显示的刻度量
            
    /// </summary>

            public int Kdcount
            
    {
                
    set {kds=value;}
            }


            
    /// <summary>
            
    /// 刻度大小
            
    /// </summary>


            
    public float Kddw
            
    {set{kddw=value;}}
            


            
    public int ChatStyle
            
    {set{this.Chart_Flag=value;}}


            
    /// <summary> 
            
    /// 将此控件呈现给指定的输出参数。
            
    /// </summary>
            
    /// <param text="output"> 要写出到的 HTML 代码 </param>

            protected override void Render(HtmlTextWriter output)
            
    {
                
    //if(dt==null)
                
    //{
                
    //    return "没有数据";
                
    //}
                
    //设计样式
                kd(items);
                output.Write(makeimage(items,
    "c:/"));

                
            }


            
    private string makeimage(DataTable dt,string imagefile)
            
    {
                

                
    string url="";
            
                
    switch(Chart_Flag)
                
    {
                    
    case 1:
                    
    {
                    
                        
    this.Draw_X_Y_Bar(dt);
                        url
    =this.Drar_Bar(dt);

                        
    break;
                    }

                    
    case 2:
                    
    {

                   
                        
    this.Draw_X_Y (dt);
                        url
    =this.Drow_Lin(dt);

                        
    break;
                    }

                    
    case 3:
                    
    {
                        
                        url
    =this.Draw_Pie(dt);
                        
    break;
                    }


                }

                            
                    
    return  url;
                
                
            }

            
    /// <summary>
            
    /// 换算成实际值
            
    /// </summary>
            
    /// <param text="kd">提供的值</param>
            
    /// <returns>返回换算后的实际值</returns>

            private float bl(float kd)
            
    {
                
    float bls=1;
                bls
    =(float)height/((float)kds*(float)kddw);
                
    return (float)kd*bls;
            }


         
            
    //通过数据计算刻度,和负坐标数



       
    //
            绘制折线图



            
    画住状图 


        
            
    画 X,Y 轴 线和刻度
            
        
            
    画 柱状 x,y  刻度
             
            
    饼状图


    }

    }



    调用页面

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

    namespace Web_Graphic
    {
        
    /// <summary>
        
    /// WebForm1 的摘要说明。
        
    /// </summary>

        public class WebForm1 : System.Web.UI.Page
        
    {
            
    protected Tom.Control.Columniation Columniation1;

        
        
            
    private void Page_Load(object sender, System.EventArgs e)
            
    {  

                
                DataTable dt
    =new DataTable();
                DataColumn dc;
                
                dc
    =new DataColumn();
                dc.DataType
    =System.Type.GetType("System.String");
                dc.ColumnName
    ="name";
                dt.Columns.Add(dc);

                

                dc
    =new DataColumn();
                dc.DataType
    =System.Type.GetType("System.Int32");
                dc.ColumnName
    ="db";
                dt.Columns.Add(dc);
                  
                dc
    =new DataColumn();
                dc.DataType
    =System.Type.GetType("System.Int32");
                dc.ColumnName
    ="df";
                dt.Columns.Add(dc);


                
                DataRow dr
    =dt.NewRow();
                
                dr[
    "name"]="点1";
                
                dr[
    "db"]="1400";
                dr[
    "df"]="500";
                 
                dt.Rows.Add(dr);

                dr
    =dt.NewRow();
                dr[
    "name"]="点2";
                
                dr[
    "db"]="200";
                dr[
    "df"]="200";
                dt.Rows.Add(dr);

                dr
    =dt.NewRow();
                dr[
    "name"]="点3";
            
                dr[
    "db"]="-300";
                     dr[
    "df"]="-600";
                dt.Rows.Add(dr);
      
                
                dr
    =dt.NewRow();
                dr[
    "name"]="点4";
                
                dr[
    "db"]="200";
                 dr[
    "df"]="1500";
                dt.Rows.Add(dr);

                dr
    =dt.NewRow();
                dr[
    "name"]="点5";
            
                dr[
    "db"]="400";
                     dr[
    "df"]="2400";
                dt.Rows.Add(dr);

                
            
        

                
                



                Columniation1.Items
    =dt;
                Columniation1.ChatStyle
    =2;  //1 为柱状,2 为折线,3为屏状 


                

                
                
            }


            
    Web 窗体设计器生成的代码
        }

    }

    效果如下...


    \

      
  • 相关阅读:
    吕滔博客 --------MYSQL 备份与参数详解
    solaris知识库
    F5 负载均衡
    日志管理 rsyslog服务浅析
    你所不知到的C++ 系列
    php内核探索
    shell 编程中使用到得if语句内判断参数
    linux查看CPU性能及工作状态的指令
    MYSQL 5.7 主从复制 -----GTID说明与限制 原创
    C#:Json数据反序列化为Dictionary并根据关键字获取指定的值
  • 原文地址:https://www.cnblogs.com/gwazy/p/394528.html
Copyright © 2011-2022 走看看