我想找一个开源的统计图生成控件,最好附上源代码,在线等急急急!

解决方案 »

  1.   

    使用这个:
    A flexible charting library for .NET
    http://www.codeproject.com/KB/graphics/zedgraph.aspx我用的就是这个,完全开源的,可以根据具体的需要而修改
      

  2.   

    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 WebChart
    {
        /**//// <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;
            }
      

  3.   

    开源的有ZedGraph,Nplot等
    参考
      

  4.   

    内容太长了,不想发了,详情请见:ftp://10014.kgkg.net/1.txt
    新建一个类:Chart.cs
    将1.txt中的代码全部复制到类文件里面,然后将其编译成dll文件,最后将其添加到工具箱中。
    使用指南:将控件拖动到页面中:
    后台设置:
             Columniation1.Items = dt;//设置控件显示的数据源。
            Columniation1.ChatStyle = 2;  //1 为柱状,2 为折线,3为屏状 
           
      

  5.   

    谢谢各位的解答,不过1楼兄弟提供的连接地址不能下载了,谢谢wbxf2008提供的代码,功能还行,不过生成的图片有点丑,还是谢谢你提供的代码。