private void Mc_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            WellLocation wl = GetClickWell(e);

            if (wl != null)
            {
                LayerControl lc = this.AssociatedObject as LayerControl;
                SelectWellLocations.Add(wl.WellNum);
                WellPosition = new Point(wl.X, wl.Y);
                Point p = lc.Root.RenderTransform.Transform(WellPosition);//转换到圆心
                WellPointList.Add(p);

                this.TrackAdorner.RemoveLastPoint();
                this.TrackAdorner.AddPoint(p);
                this.TrackAdorner.AddPoint(p);

                //执行画线事件
                if (OnDrawWellLine != null)
                {
                    UndoWellPointListHistory.Clear();
                    UndoSelectWellLocationstHistory.Clear();
                    OnDrawWellLine.Invoke(this);
                }
            }
        }
        public override void MouseRightButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (OnFinishSelect != null && SelectWellLocations.Count != 0)
            {
                Point lastPoint = this.TrackAdorner.Track.Points[this.TrackAdorner.Track.Points.Count - 1];
                if (!WellPointList.Contains(lastPoint))
                {
                    this.TrackAdorner.Track.Points.Remove(lastPoint);
                }
                IsStopMove = true;
                OnFinishSelect.Invoke(SelectWellLocations);
            }

            base.MouseRightButtonUp(sender, e);
        }
        public void Redo()
        {
            Point  p = UndoWellPointListHistory.Pop();
            string s = UndoSelectWellLocationstHistory.Pop();

            if (!IsStopMove)
            {
                this.TrackAdorner.Track.Points.Insert(this.TrackAdorner.Track.Points.Count - 1, p);
            }
            else
            {
                this.TrackAdorner.Track.Points.Add(p);
            }

            WellPointList.Add(p);
            SelectWellLocations.Add(s);
        }
        public void Undo()
        {
            string lastWell = SelectWellLocations.Last();

            //1.没有结束画线,lastPoint是多余点
            if (!IsStopMove)
            {
                this.TrackAdorner.Track.Points.Remove(WellPointList.Last());
            }
            //2.结束画线
            else
            {
                this.TrackAdorner.RemoveLastPoint();
            }

            UndoSelectWellLocationstHistory.Push(lastWell);
            UndoWellPointListHistory.Push(WellPointList.Last());
            WellPointList.Remove(WellPointList.Last());
            SelectWellLocations.Remove(lastWell);
        }