/// <summary>
        /// 调整曲线 刻度(直接修改)
        /// </summary>
        protected void AdjustLines()
        {
            if (!IsHaveLine)
            {
                return;
            }
            double xeveryone = (XLimt.Vec2 - XLimt.Vec1) / (_xTip.Count - 1);
            double yeveryone = (YLimt.Vec2 - YLimt.Vec1) / (_yTip.Count - 1);

            _everyDisForPiexl.Vec1 = (XLimt.Vec2 - XLimt.Vec1) / Draw.Width;
            _everyDisForPiexl.Vec2 = (YLimt.Vec2 - YLimt.Vec1) / Draw.Height;
            double cur = 0;
            ///计算偏移量
            VectorChart2 offect = GetOffectValue(_centerOffect);

            foreach (var item in _xTip)
            {
                //item.Text = (cur * xeveryone + _xLimt.Vec1).ToString("0.00");
                item.Text = (((double)item.GetValue(Canvas.LeftProperty) - _origPoint.X) * _everyDisForPiexl.Vec1 + offect.Vec1).ToString("0.0");
                cur++;
            }
            cur = 0;
            foreach (var item in _yTip)
            {
                //item.Text = (cur * yeveryone + _yLimt.Vec1).ToString("0.00");
                item.Text = (((double)item.GetValue(Canvas.BottomProperty) - _origPoint.Y) * _everyDisForPiexl.Vec2 + offect.Vec2).ToString("0.0");
                cur++;
            }
        }
        /// <summary>
        /// 根据偏差移动绘图区
        /// </summary>
        /// <param name="offect"></param>
        /// <returns></returns>
        public bool MoveDrawLinesAndPoints(Point offect)
        {
            if (Math.Pow(offect.X, 2) + Math.Pow(offect.Y, 2) < 3 * 3)
            {
                return(false);
            }
            _centerOffect.Vec1 += offect.X;
            _centerOffect.Vec2 += offect.Y;
            VectorChart2 offectValue = GetOffectValue(_centerOffect);

            if (XLimt.Vec1 + offectValue.Vec1 <= ScaleLimt.Vec1 || XLimt.Vec2 + offectValue.Vec1 >= ScaleLimt.Vec2 || YLimt.Vec1 + offectValue.Vec2 <= ScaleLimt.Vec3 || YLimt.Vec2 + offectValue.Vec2 >= ScaleLimt.Vec4)
            {
                _centerOffect.Vec1 -= offect.X;
                _centerOffect.Vec2 -= offect.Y;
                return(false);
            }

            Point curp = new Point(Canvas.GetLeft(DrawLineAndPoint), Draw.Height - Canvas.GetBottom(DrawLineAndPoint));

            curp.X += offect.X;
            curp.Y += offect.Y;
            Canvas.SetLeft(DrawLineAndPoint, curp.X);
            Canvas.SetBottom(DrawLineAndPoint, Draw.Height - curp.Y);
            AdjustLines();
            return(true);
        }
        /// <summary>
        /// 鼠标滚轮事件
        /// </summary>
        /// <param name="e"></param>
        protected override void OnMouseWheel(MouseWheelEventArgs e)
        {
            base.OnMouseWheel(e);
            VectorChart2 curPDraw          = (VectorChart2)e.GetPosition(Draw);
            VectorChart2 curPLinesAndPoint = (VectorChart2)e.GetPosition(DrawLineAndPoint);

            double delta = 1;

            if (e.Delta >= 120)
            {
                delta = 1.2;
            }
            else if (e.Delta <= -120)
            {
                delta = (double)5 / (double)6;
            }
            if (IsXZoom)
            {
                DrawLineAndPoint.Width *= delta;
                curPDraw.Vec1          *= delta;
                curPLinesAndPoint.Vec1 *= delta;
            }
            if (IsYZoom)
            {
                DrawLineAndPoint.Height *= delta;
                curPDraw.Vec2           *= delta;
                curPLinesAndPoint.Vec2  *= delta;
            }

            _currentLinesScale.Vec4 *= delta;
            //Canvas.SetLeft(DrawLineAndPoint, curPDraw.Vec1 - curPLinesAndPoint.Vec1);
            //Canvas.SetBottom(DrawLineAndPoint, -(DrawArea.Vec2 - (curPLinesAndPoint.Vec2 - curPDraw.Vec2)));

            ///调整刻度
            AdjustLines();

            AdjustLinesAndPoints();
        }
 /// <summary>
 /// 根据具体的值获取应该的偏移量
 /// </summary>
 /// <param name="offectValue"></param>
 /// <returns></returns>
 protected VectorChart2 GetOffectPoint(VectorChart2 offectValue)
 {
     return(new VectorChart2(offectValue.Vec1 / _everyDisForPiexl.Vec1, offectValue.Vec2 / _everyDisForPiexl.Vec2));
 }
 /// <summary>
 /// 获取偏移量
 /// </summary>
 /// <returns></returns>
 protected VectorChart2 GetOffectValue(VectorChart2 offectValue)
 {
     return(new VectorChart2(-offectValue.Vec1 * _everyDisForPiexl.Vec1, offectValue.Vec2 * _everyDisForPiexl.Vec2));
 }