public void AddCurve(FlyParameter parameter, List<float> data)
        {
            this.Parameter = parameter;
            this.mdata = data;

            CtrCurve curve = this.ctrCurve1;
            curve.GetParameterObject = this;
            curve.Height = 200;
            curve.Dock = DockStyle.Top;
            NPlot.LineList lineList = new NPlot.LineList(parameter, data);
            curve.SuspendLayout();
            curve.InitCurve();
            curve.DrawCurve(lineList, 0, lineList.EndNum);
            curve.Parameters.Add(parameter);
            curve.ResumeLayout();
            curve.BringToFront();
        }
 private void mnuAddCurve_Click(object sender, EventArgs e)
 {
     List<IParameter> parameters = GetParameterObject.GetParameterDef();
     frmAddCurve frmaddCurve = new frmAddCurve(parameters);
     
     DialogResult dr = frmaddCurve.ShowDialog();
     if (dr == DialogResult.OK)
     {
         if (GetParameterObject != null)
         {
             this.Parameters.Add(frmaddCurve.SelectedParameter);
             List<float> data = GetParameterObject.GetParameterData(frmaddCurve.SelectedParameter);
             LineList lineList = new LineList(frmaddCurve.SelectedParameter, data);
             lineList.LineUnit = frmaddCurve.SelectedParameter.Unit;
             lineList.LineName = frmaddCurve.SelectedParameter.Caption;
             DrawCurve(lineList, startNum, endNum);
             this.Refresh();
         }
     }
     
 }
        private void mnuReplaceCurve_Click(object sender, EventArgs e)
        {
            frmReplaceCurve frm = new frmReplaceCurve(this.GetParameterObject.GetParameterDef(), this.Parameters);
            DialogResult dr = frm.ShowDialog();
            if (dr == DialogResult.OK)
            {
                if (GetParameterObject != null)
                {
                    //删除要替换的曲线
                    int index = this.Parameters.IndexOf(frm.OldParameter);
                    this.Parameters.RemoveAt(index);
                    this.LineListSets.RemoveAt(index);

                    //添加新曲线
                    List<float> data = GetParameterObject.GetParameterData(frm.NewParameter);
                    LineList lineList = new LineList(frm.NewParameter, data);
                    lineList.LineUnit = frm.NewParameter.Unit;
                    lineList.LineName = frm.NewParameter.Caption;
                    this.LineListSets.Add(lineList);
                    this.Parameters.Add(frm.NewParameter);

                    ReDrawCurve();
                }
            }
        }
        public void DrawCurve(LineList lineList, int startNum, int endNum)
        {
            this.LineListSets.Add(lineList);

            this.startNum = startNum;
            this.endNum = endNum;

            string YAxisLable = string.Empty;

            LinePlot linePlot = new LinePlot();

            linePlot.OrdinateData = lineList.Y;//高度-时间曲线纵坐标
            linePlot.AbscissaData = lineList.X;//高度-时间曲线横坐标
            linePlot.Label = lineList.LineName;

            switch (this.LineListSets.Count)
            {
                case 1:
                    linePlot.Color = Color.Blue;
                    break;
                case 2:
                    linePlot.Color = Color.Black;
                    break;
                case 3:
                    linePlot.Color = Color.Purple;
                    break;
                case 4:
                    linePlot.Color = Color.Green;
                    break;
                default:
                    linePlot.Color = Color.Brown;
                    break;
            }

            linePlot.Pen.Width = 2.0f;
            linePlot.Shadow = true;//画线时加阴影

            //YAxisLable = (lineList.LineName + "(" + lineList.LineUnit + ")");

            plotSurface2D1.Add(linePlot);

            plotSurface2D1.XAxis1.Color = Color.Black;

            plotSurface2D1.YAxis1.Color = Color.Black;

            plotSurface2D1.XAxis1.Label = "绝对时间(s)";
            plotSurface2D1.XAxis1.LabelOffset = 0;//轴注释与轴间距

            plotSurface2D1.YAxis1.LabelOffset = 0;
            plotSurface2D1.YAxis1.Label += YAxisLable;

            this.lineCount = this.LineListSets.Count;
        }
        /// <summary>
        /// 动态增加图表控件
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="data"></param>
        private void AddCurve(FlyParameter parameter, List<float> data, List<int> happenTimes,int duration)
        {
            CtrCurve curve = new CtrCurve();
            curve.GetParameterObject = this;
            curve.Height = 200;
            curve.Dock = DockStyle.Top;
            NPlot.LineList lineList = new NPlot.LineList(parameter, data);
            curve.SuspendLayout();
            curve.InitCurve();
            curve.DrawCurve(lineList, 0, lineList.EndNum);
            curve.Parameters.Add(parameter);

            //添加红线(故障的发生时间)
            List<VerticalLine> vlines = GetVerticalLines(happenTimes, duration);
            if (vlines != null)
            {
                curve.AddVerticalLines(vlines);
            }

            this.pnlContainer.Controls.Add(curve);
            curve.ResumeLayout();
            curve.BringToFront();

            curve.CtrCurveClick += new CtrCurveClickEvent(curve_CtrCurveClick);
            //curve.CurveInteractionOccured += new NPlot.Windows.PlotSurface2D.InteractionHandler(curve_CurveInteractionOccured);
            curve.RestoreStatusClick += new EventHandler(curve_RestoreStatusClick);

            this.mCtrCurves.Add(curve);
        }