protected override void RefreshElements() { if (_mapControl == null) { return; } if (!IsActive) { RemoveElements(); _state = RulerState.None; return; } switch (_state) { case RulerState.None: RemoveElements(); break; case RulerState.SingleMarker: if (!_mapControl.UpperLayer.Children.Contains(_p1)) { _mapControl.UpperLayer.Children.Add(_p1); } _mapControl.UpperLayer.Children.Remove(_p2); _mapControl.UpperLayer.Children.Remove(_line); _mapControl.UpperLayer.Children.Remove(_label); break; case RulerState.Full: if (!_mapControl.UpperLayer.Children.Contains(_label)) { _mapControl.UpperLayer.Children.Add(_label); } if (!_mapControl.UpperLayer.Children.Contains(_line)) { _mapControl.UpperLayer.Children.Add(_line); } if (!_mapControl.UpperLayer.Children.Contains(_p1)) { _mapControl.UpperLayer.Children.Add(_p1); } if (!_mapControl.UpperLayer.Children.Contains(_p2)) { _mapControl.UpperLayer.Children.Add(_p2); } break; default: throw new ArgumentOutOfRangeException(); } }
private void SetNextState() { if (_state == RulerState.None) { _state = RulerState.SingleMarker; } else if (_state == RulerState.SingleMarker) { _state = RulerState.Full; } else if (_state == RulerState.Full) { _state = RulerState.SingleMarker; } }
protected override void Reset() { _state = RulerState.None; }