protected override void OnSelectedChanged(ValueChangedEventArgs <bool> e) { if (!e.NewValue) { MousePositionTracker.Reset(true); _canRadiusChangeUnratioble = false; } RaiseVisualChanged(); base.OnSelectedChanged(e); }
protected override void OnMouseDown(MouseDownEventArgs e) { if (e == null) { throw new ArgumentNullException(nameof(e)); } var thisPosition = e.Position; //若上次点击位置为空,则记录点击位置; if (MousePositionTracker.LastMouseDownPosition == null) { if (thisPosition.IsAlmostEqualTo(Ellipse2D.Center)) { MousePositionTracker.LastMouseDownPosition = thisPosition; } else if (thisPosition.IsAlmostEqualTo(Ellipse2D.GetTopPoint()) || thisPosition.IsAlmostEqualTo(Ellipse2D.GetBottomPoint()) || thisPosition.IsAlmostEqualTo(Ellipse2D.GetLeftPoint()) || thisPosition.IsAlmostEqualTo(Ellipse2D.GetRightPoint())) { MousePositionTracker.LastMouseDownPosition = thisPosition; } else { return; } e.Handled = true; } //否则将应用更改; else if (MousePositionTracker.CurrentHoverPosition != null) { var newEllipse = GetPreviewEllipse2D(); if (newEllipse != null) { Ellipse2D = newEllipse; } MousePositionTracker.Reset(true); e.Handled = true; } }