示例#1
0
        protected override void OnSelectedChanged(ValueChangedEventArgs <bool> e)
        {
            if (!e.NewValue)
            {
                MousePositionTracker.Reset(true);
                _canRadiusChangeUnratioble = false;
            }

            RaiseVisualChanged();
            base.OnSelectedChanged(e);
        }
示例#2
0
        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;
            }
        }