zoukankan      html  css  js  c++  java
  • .net之生成图表的控件(柱状图,曲线图,饼状图) [转]

     可以生成柱状图,曲线图,饼状图,只要你给他一个datatable,在这声明一下
    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 hya.Control
    {
        
    /// <summary>
        
    ///    柱状图控件
        
    ///    需要传入列表项名,值,超级连接地址
        
    /// </summary>

        [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  刻度

            
    饼状图


        }

    }


    在调用时很简单, 首先将它编译成控件,在aspx页添加引用
     
    <%@ Register TagPrefix="cc1" Namespace="hya.Control" Assembly="Columniation" %>

    在你需要显示图表的地方添加如下标签:
    <cc1:Columniation id="Columniation1" runat="server"></cc1:Columniation>
    在对应的.cs页写下如下的代码
    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;



    public partial class _Default : System.Web.UI.Page 
    {

            
    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);

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




                DataRow dr 
    = dt.NewRow();

                dr[
    "name"= "点1";

                dr[
    "db"= "1000";
               dr[
    "df"= "500";
              dr[
    "dz"= "240";
                dt.Rows.Add(dr);

                dr 
    = dt.NewRow();
                dr[
    "name"= "点2";

                dr[
    "db"= "200";
               dr[
    "df"= "200";
             dr[
    "dz"= "240";
                dt.Rows.Add(dr);

                dr 
    = dt.NewRow();
                dr[
    "name"= "点3";

                dr[
    "db"= "300";
              dr[
    "df"= "600";
              dr[
    "dz"= "240";
                dt.Rows.Add(dr);


                dr 
    = dt.NewRow();
                dr[
    "name"= "点4";

                dr[
    "db"= "200";
                dr[
    "df"= "1500";
               dr[
    "dz"= "240";
                dt.Rows.Add(dr);

                dr 
    = dt.NewRow();
                dr[
    "name"= "点5";

                dr[
    "db"= "400";
             dr[
    "df"= "2400";
             dr[
    "dz"= "240";
                dt.Rows.Add(dr);









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



        }

    }



    其生成的饼状图如下:


    其生成的柱状图如下:

    其生成的折线图如下:
  • 相关阅读:
    NSString
    IOS
    IOS
    UITextView
    UIButton
    IOS 视频缩略图的生成
    IOS CALayer的阴影属性
    IOS 创建渐变图层
    IOS 截取图片 部分 并生成新图片
    [看远、看透、看淡]
  • 原文地址:https://www.cnblogs.com/zhangq723/p/1656026.html
Copyright © 2011-2022 走看看