public override void timerAdd_Tick(object sender, EventArgs e)
        {
            _dblProp = _dblProp + 0.001;
            IMapControl4       m_mapControl = _DataRecords.ParameterInitialize.m_mapControl;
            IGraphicsContainer pGra         = m_mapControl.Map as IGraphicsContainer;

            pGra.DeleteAllElements();

            if (_dblProp > 1)
            {
                timerAdd.Enabled = false;
                _dblProp         = 1;

                pbScale.Value = Convert.ToInt16(100 * _dblProp);
                CPolyline cpl0 = GetTargetcpl(_dblProp);
                CDrawInActiveView.ViewPolyline(_DataRecords.ParameterInitialize.m_mapControl, cpl0);
                return;
            }
            CPolyline cpl1 = GetTargetcpl(_dblProp);

            pbScale.Value = Convert.ToInt16(100 * _dblProp);



            CDrawInActiveView.ViewPolyline(m_mapControl, cpl1);
        }
        private CPolyline DisplayInterpolation(double dblProp, IMapControl4 m_mapControl)
        {
            List <CCorrCpts> pCorrCptsLt = _DataRecords.ParameterResult.CCorrCptsLt;
            int intPtNum = pCorrCptsLt.Count;

            List <CPoint> newcptlt = new List <CPoint>();
            //先确定最后两个点
            double dblLastX    = (1 - dblProp) * pCorrCptsLt[intPtNum - 1].FrCpt.X + dblProp * pCorrCptsLt[intPtNum - 1].ToCpt.X;
            double dblLastY    = (1 - dblProp) * pCorrCptsLt[intPtNum - 1].FrCpt.Y + dblProp * pCorrCptsLt[intPtNum - 1].ToCpt.Y;
            var    newlastcpt  = new CPoint(intPtNum - 1, dblLastX, dblLastY);
            double dblLast1X   = (1 - dblProp) * pCorrCptsLt[intPtNum - 2].FrCpt.X + dblProp * pCorrCptsLt[intPtNum - 2].ToCpt.X;
            double dblLast1Y   = (1 - dblProp) * pCorrCptsLt[intPtNum - 2].FrCpt.Y + dblProp * pCorrCptsLt[intPtNum - 2].ToCpt.Y;
            var    newlast1cpt = new CPoint(intPtNum - 2, dblLast1X, dblLast1Y);

            newcptlt.Insert(0, newlastcpt);
            newcptlt.Insert(0, newlast1cpt);

            double dblPreAxisAngle = CGeoFunc.CalAxisAngle(newlast1cpt, newlastcpt);   //前一个线段的绝对角

            for (int i = pCorrCptsLt.Count - 3; i >= 0; i--)
            {
                //目标夹角大小
                double dblAngle = (1 - dblProp) * _adblFrAngle[i] + dblProp * _adblToAngle[i];
                //绝对角
                double dblCurAxisAngle = dblPreAxisAngle - dblAngle;      //当前线段的绝对角(0到2*PI)
                if (dblCurAxisAngle >= 2 * Math.PI)
                {
                    dblCurAxisAngle = dblCurAxisAngle - 2 * Math.PI;
                }
                else if (dblCurAxisAngle < 0)
                {
                    dblCurAxisAngle = dblCurAxisAngle + 2 * Math.PI;
                }

                //目标长度
                double dblLength = (1 - dblProp) * _adblFrLength[i] + dblProp * _adblToLength[i];
                //新坐标
                double dblNewX = newcptlt[0].X + dblLength * Math.Cos(dblCurAxisAngle);
                double dblNewY = newcptlt[0].Y + dblLength * Math.Sin(dblCurAxisAngle);
                CPoint newcpt  = new CPoint(i, dblNewX, dblNewY);
                newcptlt.Insert(0, newcpt);
                //更新dblPreAxisAngle(将向量旋转180°)
                if (dblCurAxisAngle >= Math.PI)
                {
                    dblPreAxisAngle = dblCurAxisAngle - Math.PI;
                }
                else
                {
                    dblPreAxisAngle = dblCurAxisAngle + Math.PI;
                }
            }
            CPolyline newcpl = new CPolyline(0, newcptlt);

            IGraphicsContainer pGra = m_mapControl.Map as IGraphicsContainer;

            pGra.DeleteAllElements();
            CDrawInActiveView.ViewPolyline(m_mapControl, newcpl);
            return(newcpl);
        }
Esempio n. 3
0
 private void btnReduce_Click(object sender, EventArgs e)
 {
     try
     {
         _dblProp                  = _dblProp - 0.02;
         pbScale.Value             = Convert.ToInt16(100 * _dblProp);
         _RelativeInterpolationCpl = CDrawInActiveView.DisplayInterpolation(_DataRecords, _dblProp);
     }
     catch (Exception)
     {
         MessageBox.Show("不能再减小了!");
     }
 }
        public override void btnRun_Click(object sender, EventArgs e)
        {
            List <int> intSetoff = new List <int>();

            for (int i = 0; i < _CPolylineLt.Count; i++)
            {
                if (_CPolylineLt[i].CptLt[0].Z > _CPolylineLt[i].CptLt[_CPolylineLt[i].CptLt.Count - 1].Z)
                {
                    CDrawInActiveView.ViewPolyline(_DataRecords.ParameterInitialize.m_mapControl, _CPolylineLt[i]);
                }
                else
                {
                    intSetoff.Add(_CPolylineLt[i].ID);
                }
            }

            CDrawInActiveView.ViewPolyline(_DataRecords.ParameterInitialize.m_mapControl, _CPolylineLt[intCount]);
            intCount += 1;
            int kk = 5;

            //以最后两个点为基点
            //_CPolyline = _CPolylineLt[1];
            for (int i = 0; i < _CPolylineLt.Count; i++)
            {
                if (_CPolylineLt[i].ID == 10)
                {
                    _CPolyline = _CPolylineLt[i];
                    break;
                }
            }

            CPolyline cpl = _CPolyline;

            CDrawInActiveView.ViewPolyline(_DataRecords.ParameterInitialize.m_mapControl, cpl);
            int intPtCount = cpl.CptLt.Count;

            //计算长度初始值(全部计算)
            _adblLength0 = new double[intPtCount - 2];
            for (int i = 0; i < intPtCount - 2; i++)
            {
                _adblLength0[i] = CGeoFunc.CalDis(cpl.CptLt[i], cpl.CptLt[i + 1]);
            }


            //计算角度初始值
            _adblAngle0 = new double[intPtCount - 2];
            for (int i = 0; i < intPtCount - 2; i++)
            {
                _adblAngle0[i] = CGeoFunc.CalAngle_Counterclockwise(cpl.CptLt[i], cpl.CptLt[i + 1], cpl.CptLt[i + 2]);
            }
        }
 public virtual void timerReduce_Tick(object sender, EventArgs e)
 {
     _dblProp = _dblProp - 0.01;
     if (_dblProp < 0)
     {
         this.timerReduce.Enabled = false;
         _dblProp                  = 0;
         pbScale.Value             = Convert.ToInt16(100 * _dblProp);
         _RelativeInterpolationCpl = CDrawInActiveView.DisplayInterpolation(_DataRecords, _dblProp);
         return;
     }
     pbScale.Value             = Convert.ToInt16(100 * _dblProp);
     _RelativeInterpolationCpl = CDrawInActiveView.DisplayInterpolation(_DataRecords, _dblProp);
 }
Esempio n. 6
0
        private CPolyline DisplayInterpolation(double dblProp, IMapControl4 m_mapControl)
        {
            CPolyline cpl = _pCAL.GetTargetcpl(dblProp);

            IGraphicsContainer pGra = m_mapControl.Map as IGraphicsContainer;

            pGra.DeleteAllElements();
            CDrawInActiveView.ViewPolyline(m_mapControl, cpl);
            //CDrawInActiveView.ViewPolyline(m_mapControl, _DataRecords.ParameterResult.FromCpl);
            //CDrawInActiveView.ViewPolyline(m_mapControl, _DataRecords.ParameterResult.ToCpl);


            return(cpl);
        }
Esempio n. 7
0
 private void btnAdd_Click(object sender, EventArgs e)
 {
     if (_dblProp >= 0.98)
     {
         _dblProp                  = 1;
         pbScale.Value             = Convert.ToInt16(100 * _dblProp);
         _RelativeInterpolationCpl = CDrawInActiveView.DisplayInterpolation(_DataRecords, _dblProp);
     }
     else
     {
         _dblProp                  = _dblProp + 0.02;
         pbScale.Value             = Convert.ToInt16(100 * _dblProp);
         _RelativeInterpolationCpl = CDrawInActiveView.DisplayInterpolation(_DataRecords, _dblProp);
     }
 }
Esempio n. 8
0
        /// <summary>
        /// 显示并返回单个插值面状要素
        /// </summary>
        /// <param name="pDataRecords">数据记录</param>
        /// <param name="dblProp">差值参数</param>
        /// <returns>面状要素</returns>
        public CPolyline DisplayInterpolation(double dblProp)
        {
            if (dblProp < 0 || dblProp > 1)
            {
                MessageBox.Show("请输入正确参数!");
                return(null);
            }

            CPolyline cpl = GetTargetcpl(dblProp);

            // 清除绘画痕迹
            IMapControl4       m_mapControl = _DataRecords.ParameterInitialize.m_mapControl;
            IGraphicsContainer pGra         = m_mapControl.Map as IGraphicsContainer;

            pGra.DeleteAllElements();
            CDrawInActiveView.ViewPolyline(m_mapControl, cpl);  //显示生成的线段
            return(cpl);
        }
Esempio n. 9
0
        public override void timerReduce_Tick(object sender, EventArgs e)
        {
            List <CPolyline> cpllt = _DataRecords.ParameterResult.CResultPlLt;

            if (_intI >= 0 && _intI < cpllt.Count)
            {
                pbScale.Value = Convert.ToInt16(100 * _intI / (cpllt.Count - 1));
                IMapControl4       m_mapControl = _DataRecords.ParameterInitialize.m_mapControl;
                IGraphicsContainer pGra         = m_mapControl.Map as IGraphicsContainer;
                pGra.DeleteAllElements();
                CDrawInActiveView.ViewPolyline(m_mapControl, cpllt[_intI]);  //显示生成的线段
                _intI -= 1;
            }
            else if (_intI < 0)
            {
                this.timerReduce.Enabled = false;
                _intI = 0;
            }
            else
            {
                _intI = cpllt.Count - 1;
            }
        }
Esempio n. 10
0
 private void btn010_Click(object sender, EventArgs e)
 {
     _dblProp = 0.1;
     _RelativeInterpolationCpl = CDrawInActiveView.DisplayInterpolation(_DataRecords, _dblProp);
 }
Esempio n. 11
0
 private void btnInputedScale_Click(object sender, EventArgs e)
 {
     _dblProp = Convert.ToDouble(this.txtProportion.Text);
     _RelativeInterpolationCpl = CDrawInActiveView.DisplayInterpolation(_DataRecords, _dblProp);
 }
        /// <summary>
        /// 显示并返回单个插值面状要素
        /// </summary>
        /// <param name="pDataRecords">数据记录</param>
        /// <param name="dblProp">差值参数</param>
        /// <returns>面状要素</returns>
        public CPolyline DisplayInterpolation(double dblProp, CPolyline lastcpl)
        {
            CPolyline cpl = GetTargetcpl(dblProp, lastcpl);

            //_DataRecords.ParameterInitialize.txtT.Text = "   t = " + dblProp.ToString();
            //_DataRecords.ParameterInitialize.txtVtPV.Text ="   VtPV = " + cpl.dblVtPV.ToString();

            //// 清除绘画痕迹
            //IMapControl4 m_mapControl = _DataRecords.ParameterInitialize.m_mapControl;
            //IGraphicsContainer pGra = m_mapControl.Map as IGraphicsContainer;
            //pGra.DeleteAllElements();

            //if (dblProp == 0)
            //{
            //    int tt = 5;
            //}
            //else if (dblProp == 1)
            //{
            //    int ss = 5;
            //}


            ////对线段进行染色
            //for (int i = 0; i < cpl.SubCPlLt.Count; i++)
            //{
            //    double dblColor = 255;
            //    int intColor = Convert.ToInt32((Math.Abs(cpl.SubCPlLt[i].dblLengthV) - _dblMinLengthV) / _dblDiffLengthV * dblColor);
            //    intColor = Math.Abs(intColor);
            //    if (Math.Abs(cpl.SubCPlLt[i].dblLengthV) < _dblTX)
            //    {
            //        cpl.SubCPlLt[i].intGreen = 255;
            //    }

            //    else if (cpl.SubCPlLt[i].dblLengthV > 0)
            //    {
            //        if (intColor <= 255)
            //        {
            //            cpl.SubCPlLt[i].intRed = 255;
            //            cpl.SubCPlLt[i].intGreen = 255 - intColor;
            //            cpl.SubCPlLt[i].intBlue = 255 - intColor;
            //        }
            //        else
            //        {
            //            cpl.SubCPlLt[i].intRed = 255;
            //        }
            //    }
            //    else if (cpl.SubCPlLt[i].dblLengthV < 0)
            //    {
            //        if (intColor <= 255)
            //        {
            //            cpl.SubCPlLt[i].intRed = 255 - intColor;
            //            cpl.SubCPlLt[i].intGreen = 255 - intColor;
            //            cpl.SubCPlLt[i].intBlue = 255;
            //        }
            //        else
            //        {
            //            cpl.SubCPlLt[i].intBlue = 255;
            //        }
            //    }
            //}

            //for (int i = 0; i < cpl.SubCPlLt.Count; i++)
            //{
            //    CPolyline subcpl = cpl.SubCPlLt[i];
            //    CDrawInActiveView.ViewPolylineByRGB(m_mapControl, subcpl, subcpl.intRed, subcpl.intGreen, subcpl.intBlue);  //显示生成的线段
            //}

            ////对缓冲区进行染色
            //for (int i = 1; i < cpl.CptLt.Count -1; i++)
            //{
            //    double dblColor = 255;
            //    int intColor = Convert.ToInt32((Math.Abs(cpl.CptLt [i].dblAngleV ) - _dblMinAngleV) / _dblDiffAngleV * dblColor);
            //    intColor = Math.Abs(intColor);


            //    if (Math .Abs (cpl.CptLt[i].dblAngleV)<_dblTX)
            //    {
            //        cpl.CptLt[i].intGreen = 255;
            //    }
            //    else if (cpl.CptLt[i].dblAngleV > 0)
            //    {
            //        if (intColor <= 255)
            //        {
            //            cpl.CptLt[i].intRed = 255;
            //            cpl.CptLt[i].intGreen = 255 - intColor;
            //            cpl.CptLt[i].intBlue = 255 - intColor;
            //        }
            //        else
            //        {
            //            cpl.CptLt[i].intRed = 255;
            //        }
            //    }
            //    else if (cpl.CptLt[i].dblAngleV < 0)
            //    {
            //        if (intColor <= 255)
            //        {
            //            cpl.CptLt[i].intRed = 255 - intColor;
            //            cpl.CptLt[i].intGreen = 255 - intColor;
            //            cpl.CptLt[i].intBlue = 255;
            //        }
            //        else
            //        {
            //            cpl.CptLt[i].intBlue = 255;
            //        }
            //    }
            //}

            //for (int i = 1; i < cpl.CptLt.Count-1; i++)
            //{
            //    CPoint cpt=cpl.CptLt[i];
            //    CHelpFunc.ViewPolygonGeometryByRGB(m_mapControl, cpt.Buffer(5), cpt.intRed, cpt.intGreen, cpt.intBlue);  //显示缓冲区多边形
            //}

            ////显示线段
            //IActiveView pAv = pGra as IActiveView;
            //pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);



            // 清除绘画痕迹
            IMapControl4       m_mapControl = _DataRecords.ParameterInitialize.m_mapControl;
            IGraphicsContainer pGra         = m_mapControl.Map as IGraphicsContainer;

            pGra.DeleteAllElements();
            CDrawInActiveView.ViewPolyline(m_mapControl, cpl);  //显示生成的线段


            return(cpl);
        }
        public void STS()
        {
            var pParameterInitialize = _ParameterInitialize;
            var pAxMapControl        = pParameterInitialize.pAxMapControl;


            pAxMapControl.Dock   = DockStyle.None;
            pAxMapControl.Width  = 310;
            pAxMapControl.Height = 310;
            double dblWHRation = pAxMapControl.Width / pAxMapControl.Height;

            double dblCenterX = 318;
            double dblCenterY = 345;
            //IPoint cptMC = new PointClass();
            //cptMC.PutCoords(170, 180);

            IEnvelope newEnvelope = new EnvelopeClass();
            double    dblRatio    = 1;

            newEnvelope.XMin = dblCenterX - pAxMapControl.Width / dblRatio;
            newEnvelope.XMax = dblCenterX + pAxMapControl.Width / dblRatio;
            newEnvelope.YMin = dblCenterY - pAxMapControl.Height / dblRatio;
            newEnvelope.YMax = dblCenterY + pAxMapControl.Height / dblRatio;
            //newEnvelope.XMin = dblCenterX - pAxMapControl.Width ;
            //newEnvelope.XMax = dblCenterX + pAxMapControl.Width ;
            //newEnvelope.YMin = dblCenterY - pAxMapControl.Height ;
            //newEnvelope.YMax = dblCenterY + pAxMapControl.Height;
            pAxMapControl.Extent = newEnvelope;

            //pAxMapControl.MapScale = 1 / 6000000;
            //pAxMapControl.CenterAt(cptMC);
            //Old Larger-scale, Old Smaller-scale, New Larger-scale, New Smaller-scale
            _OLCplLt = this.ObjCGeoLtLt[0].Select(cgeo => cgeo as CPolyline).ToList();
            _OSCplLt = this.ObjCGeoLtLt[1].Select(cgeo => cgeo as CPolyline).ToList();
            _NLCplLt = this.ObjCGeoLtLt[2].Select(cgeo => cgeo as CPolyline).ToList();
            _NSCplLt = this.ObjCGeoLtLt[3].Select(cgeo => cgeo as CPolyline).ToList();


            var olcpl = _OLCplLt[0];
            var oscpl = _OSCplLt[0];
            var nlcpl = _NLCplLt[0];
            var nscpl = _NSCplLt[0];

            double dblXAxisStart = 50;
            double dblXAxisEnd   = 620;
            double dblYAxisStart = 70;
            double dblYAxisEnd   = 620;

            double dblScaleMidY = (olcpl.CptLt[0].Y + oscpl.CptLt[0].Y) / 2;
            double dblTimeMidX  = (olcpl.CptLt[4].X + nlcpl.CptLt[4].X) / 2;

            var strTS             = _ParameterInitialize.strTS;
            var LinkCplLt         = new List <CPolyline>();
            var SeparatorCplLt    = new List <CPolyline>();
            var scaleSeparatorCpl = new CPolyline(
                new CPoint(dblXAxisStart + 5, dblScaleMidY), new CPoint(dblXAxisEnd - 5, dblScaleMidY));
            var timeSeparatorCpl = new CPolyline(
                new CPoint(dblTimeMidX, dblYAxisStart + 5), new CPoint(dblTimeMidX, dblYAxisEnd - 5));

            if (strTS == "vario_vario")
            {
                //time transition
                LinkCplLt.AddRange(GenerateVarioLinkCplEb(olcpl, nlcpl, oscpl, nscpl, 4, 12));
                //scale transition
                LinkCplLt.AddRange(GenerateVarioLinkCplEb(olcpl, oscpl, nlcpl, nscpl, 0, 8));
            }
            else if (strTS == "vario_separate")
            {
                //time transition
                LinkCplLt.AddRange(GenerateVarioLinkCplEb(olcpl, nlcpl, oscpl, nscpl, 4, 12));
                //scale transition
                LinkCplLt.AddRange(GenerateSeparateLinkCplEb(olcpl, oscpl, nlcpl, nscpl, 0, 8, dblScaleMidY, "Scale"));

                SeparatorCplLt.Add(scaleSeparatorCpl);
            }
            else if (strTS == "separate_vario")
            {
                //time transition
                LinkCplLt.AddRange(GenerateSeparateLinkCplEb(olcpl, nlcpl, oscpl, nscpl, 4, 12, dblTimeMidX, "Time"));
                //scale transition
                LinkCplLt.AddRange(GenerateVarioLinkCplEb(olcpl, oscpl, nlcpl, nscpl, 0, 8));

                SeparatorCplLt.Add(timeSeparatorCpl);
            }
            else //if (strTS == "separate_separate")
            {
                //time transition
                LinkCplLt.AddRange(GenerateSeparateLinkCplEb(olcpl, nlcpl, oscpl, nscpl, 4, 12, dblTimeMidX, "Time"));
                //scale transition
                LinkCplLt.AddRange(GenerateSeparateLinkCplEb(olcpl, oscpl, nlcpl, nscpl, 0, 8, dblScaleMidY, "Scale"));

                SeparatorCplLt.Add(scaleSeparatorCpl);
                SeparatorCplLt.Add(timeSeparatorCpl);
            }


            CSaveFeature.SaveCplEb(SeparatorCplLt, strTS + "_Separator", intRed: 204, intGreen: 204, intBlue: 204,
                                   pesriSimpleLineStyle: esriSimpleLineStyle.esriSLSDot);
            //pesriSimpleLineStyle: esriSimpleLineStyle.esriSLSDash);
            CSaveFeature.SaveCplEb(LinkCplLt, strTS + "_Link", intRed: 150, intGreen: 150, intBlue: 150);



            double dblXExtra   = 400;
            double dblYExtra   = 400;
            var    olIRgbColor = CHelpFunc.GenerateIRgbColor(230, 97, 1);
            var    nlIRgbColor = CHelpFunc.GenerateIRgbColor(94, 60, 153);


            var cpllt00 = Output(0.00, 0.00, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt10 = Output(0.33, 0.00, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt20 = Output(0.67, 0.00, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt30 = Output(1.00, 0.00, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);

            var cpllt01 = Output(0.00, 0.33, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt11 = Output(0.33, 0.33, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt21 = Output(0.67, 0.33, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt31 = Output(1.00, 0.33, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);

            var cpllt02 = Output(0.00, 0.67, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt12 = Output(0.33, 0.67, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt22 = Output(0.67, 0.67, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt32 = Output(1.00, 0.67, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);

            var cpllt03 = Output(0.00, 1.00, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt13 = Output(0.33, 1.00, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt23 = Output(0.67, 1.00, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);
            var cpllt33 = Output(1.00, 1.00, olIRgbColor, nlIRgbColor, dblXExtra, dblYExtra);

            double dblMinY00 = cpllt00[0].CptLt.Min(cpt => cpt.Y);
            double dblMinY01 = cpllt01[0].CptLt.Min(cpt => cpt.Y);
            double dblMinY02 = cpllt02[0].CptLt.Min(cpt => cpt.Y);
            double dblMinY03 = cpllt03[0].CptLt.Min(cpt => cpt.Y);

            double dblMaxY00 = cpllt00[0].CptLt.Max(cpt => cpt.Y);
            double dblMaxY01 = cpllt01[0].CptLt.Max(cpt => cpt.Y);
            double dblMaxY02 = cpllt02[0].CptLt.Max(cpt => cpt.Y);
            double dblMaxY03 = cpllt03[0].CptLt.Max(cpt => cpt.Y);

            double dblMidY00 = (dblMinY00 + dblMaxY00) / 2;
            double dblMidY01 = (dblMinY01 + dblMaxY01) / 2;
            double dblMidY02 = (dblMinY02 + dblMaxY02) / 2;
            double dblMidY03 = (dblMinY03 + dblMaxY03) / 2;


            double dblMinX00 = cpllt00[0].CptLt.Min(cpt => cpt.X);
            double dblMinX10 = cpllt10[0].CptLt.Min(cpt => cpt.X);
            double dblMinX20 = cpllt20[0].CptLt.Min(cpt => cpt.X);
            double dblMinX30 = cpllt30[0].CptLt.Min(cpt => cpt.X);

            double dblMaxX00 = cpllt00[0].CptLt.Max(cpt => cpt.X);
            double dblMaxX10 = cpllt10[0].CptLt.Max(cpt => cpt.X);
            double dblMaxX20 = cpllt20[0].CptLt.Max(cpt => cpt.X);
            double dblMaxX30 = cpllt30[0].CptLt.Max(cpt => cpt.X);

            double dblMidX00 = (dblMinX00 + dblMaxX00) / 2;
            double dblMidX10 = (dblMinX10 + dblMaxX10) / 2;
            double dblMidX20 = (dblMinX20 + dblMaxX20) / 2;
            double dblMidX30 = (dblMinX30 + dblMaxX30) / 2;



            double dblTextSize = 8;

            CDrawInActiveView.DrawArrow(pAxMapControl.ActiveView,
                                        new CPoint(dblXAxisStart - 30, dblYAxisStart), new CPoint(dblXAxisEnd, dblYAxisStart), 6, 5); //x arrow; horizontal
            CDrawInActiveView.DrawArrow(pAxMapControl.ActiveView,
                                        new CPoint(dblXAxisStart, dblYAxisStart - 30), new CPoint(dblXAxisStart, dblYAxisEnd), 6, 5); //y arrow; vertical
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "Generalize", dblXAxisStart + 20, dblYAxisEnd + 10, dblTextSize);
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "Time", dblXAxisEnd - 20, dblYAxisStart - 25, dblTextSize);

            //scales
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "", dblXAxisStart - 40, dblMidY00 - dblTextSize / 2, dblTextSize);
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "", dblXAxisStart - 40, dblMidY01 - dblTextSize / 2, dblTextSize);
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "", dblXAxisStart - 40, dblMidY02 - dblTextSize / 2, dblTextSize);
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "", dblXAxisStart - 40, dblMidY03 - dblTextSize / 2, dblTextSize);

            //times
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "2015", dblMidX00, dblYAxisStart - 30, dblTextSize);
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "2016", dblMidX10, dblYAxisStart - 30, dblTextSize);
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "2017", dblMidX20, dblYAxisStart - 30, dblTextSize);
            CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "2018", dblMidX30, dblYAxisStart - 30, dblTextSize);

            var pExportActiveViewCS_Net = new MorphingClass.CCommon.ExportActiveViewCS_Net();

            pExportActiveViewCS_Net.ExportActiveViewParameterized(300, 1, "EMF",
                                                                  pParameterInitialize.strMxdPathBackSlash, strTS, true);


            ////inputs
            //CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "input", dblXAxisStart + 30, dblYAxisStart + 15, dblTextSize);
            //CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "input", dblXAxisStart + 30, oscpl.CptLt[0].Y + 40, dblTextSize);
            //CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "input", nlcpl.CptLt[5].X + 10, dblYAxisStart + 15, dblTextSize);
            //CDrawInActiveView.DrawTextMarker(pAxMapControl.ActiveView, "input", nlcpl.CptLt[5].X + 10, oscpl.CptLt[0].Y + 40, dblTextSize);



            //Output(0.3,0);
            //Output(0, 0.6);
            //Output(0.7, 0.2);
            //Output(0.6, 0.9);
        }
 public virtual void btn020_Click(object sender, EventArgs e)
 {
     _dblProp = 0.2;
     _RelativeInterpolationCpl = CDrawInActiveView.DisplayInterpolation(_DataRecords, _dblProp);
 }