分别在ZedGraphControl中生成柱形图,饼形图,曲线图,折线图等
但是没办法清空上一次生成的统计图,有谁知道原因?
我写了如下的清空: GraphPane myPane = zg1.GraphPane;
            //清空绘制区
            myPane.CurveList.Clear();
            myPane.GraphObjList.Clear();
            。
            zg1.AxisChange();
            zg1.Refresh();

解决方案 »

  1.   

    这控件我用了好久了 就使用了myPane.CurveList.Clear();
    就可以很好的清空,一点问题都没有。给你看我的代码:
     public void InitializeZedGraph(DataTable m_dt,string name, string p_strname, string dstand)
            {
                myPane = zed.GraphPane;
                myPane.Title.Text = p_strname + "趋势图";
                myPane.XAxis.Title.Text = "检测日期";
                myPane.YAxis.Title.Text = "检验值";
                myPane.XAxis.MajorGrid.IsVisible = true;
                myPane.YAxis.MajorGrid.IsVisible = true;            //背景颜色
                myPane.Fill = new Fill(Color.White, Color.LightBlue, 90F);
                myPane.Chart.Fill.IsVisible = false;
                myPane.Legend.Fill.IsVisible = false;
                list.Clear();
                DataTable dtTime = new DataTable(); //用于计算X抽最大最小值的数据表
                dtTime.Columns.Add("date", typeof(System.DateTime));
                //DataRow dr = dtTime.NewRow();            bool b = m_dt.Columns.Contains("SAMPTIME");  //判断时间列是否存在
                for (int i = 0; i < m_dt.Rows.Count; i++)
                {
                    if (m_dt.Rows[i][name].ToString() != string.Empty)
                    {
                        DateTime dt;
                        if (b == true)
                        {
                            dt = Convert.ToDateTime(m_dt.Rows[i]["SAMPDATE"].ToString() + " " + m_dt.Rows[i]["SAMPTIME"].ToString());
                        }
                        else
                        {
                            dt = Convert.ToDateTime(m_dt.Rows[i]["SAMPDATE"].ToString());
                        }
                        
                        DataRow dr = dtTime.NewRow();
                        dr["date"] = dt;
                        dtTime.Rows.Add(dr);
                        XDate xd = new XDate(dt);
                        double x = (double)xd;                    double y = Convert.ToDouble(m_dt.Rows[i][name]);
                        list.Add(x, y);
                    }
                }
                myPane.CurveList.Clear();
                myCurve = myPane.AddCurve(p_strname, list, Color.Green, SymbolType.Diamond);//SymbolType.None的定义绘制线条的形状
                try
                {
                    DateTime dMax = Convert.ToDateTime(dtTime.Compute("Max(date)", "true"));
                    DateTime dMin = Convert.ToDateTime(dtTime.Compute("Min(date)", "true"));
                    myPane.GraphObjList.Clear();
                    if (dstand != string.Empty)
                    {
                        StandZedGraph(dMax, dMin, dstand);
                    }
                    
                }
                catch
                { }
                myPane.XAxis.Type = AxisType.Date;
                myPane.YAxis.Type = AxisType.Linear;
                //X坐标时间显示格式
                myPane.XAxis.Scale.Format = "yyyy-MM-dd hh:mm";
                myPane.XAxis.Scale.MinorStep = 1;
                //X轴大步长为5,也就是显示文字的大间隔
                myPane.XAxis.Scale.MajorStep = 5;            //坐标点时间显示格式            zed.PointDateFormat = "yyyy-MM-dd hh:mm";
                zed.IsShowPointValues = true;
                // Calculate the Axis Scale Ranges
                zed.AxisChange();//数据有变化重新绘制
                zed.Refresh();
            }