Exemplo n.º 1
0
        // todo !!!dispose missing & -= missing!!!
        public CroppingAdorner(Canvas adornedElement)
            : base(adornedElement)
        {
            _visualCollection = new VisualCollection(this);
            _originalCanvas   = adornedElement;
            _canvasOverlay    = new Canvas();
            _rectangleManager = new RectangleManager(_canvasOverlay);
            _overlayManager   = new OverlayManager(_canvasOverlay,
                                                   _rectangleManager);
            _thumbManager = new ThumbManager(_canvasOverlay,
                                             _rectangleManager);
            _displayTextManager = new DisplayTextManager(_canvasOverlay,
                                                         _rectangleManager);
            _visualCollection.Add(_canvasOverlay);

            MouseLeftButtonDown += MouseLeftButtonDownEventHandler;
            MouseMove           += MouseMoveEventHandler;
            MouseLeftButtonUp   += MouseLeftButtonUpEventHandler;

            //add overlay
            Loaded += (sender,
                       args) =>
            {
                _overlayManager.UpdateOverlay();
            };

            //if rectangle finalSize changed, re-draw overlay
            _rectangleManager.RectangleSizeChanged += (sender,
                                                       args) =>
            {
                _overlayManager
                .UpdateOverlay();
                _displayTextManager
                .UpdateSizeText();
            };

            _rectangleManager.RectangleMoved += (sender,
                                                 args) =>
            {
                _overlayManager
                .UpdateOverlay();
                _displayTextManager
                .UpdateSizeText();
            };

            _rectangleManager.OnRectangleDoubleClickEvent += (sender,
                                                              args) =>
            {
                OnRectangleDoubleClickEvent
                ?.Invoke(sender,
                         new
                         DoubleClickEventArgs
                {
                    BitmapFrame
                        = GetCroppedBitmapFrame()
                });
            };
        }
Exemplo n.º 2
0
 private void MouseMoveEventHandler(object sender, MouseEventArgs e)
 {
     if (_isMouseLeftButtonDown)
     {
         _rectangleManager.MouseMoveEventHandler(e);
         _overlayManager.UpdateOverlay();
         _thumbManager.ShowThumbs(true);
         _displayTextManager.ShowText(true);
         _displayTextManager.UpdateSizeText();
         _thumbManager.UpdateThumbsPosition();
     }
 }
Exemplo n.º 3
0
 private void MouseMoveEventHandler(object sender, MouseEventArgs e)
 {
     if (_isMouseLeftButtonDown)
     {
         _rectangleManager.MouseMoveEventHandler(e);
         _overlayManager.UpdateOverlay();
         _thumbManager.ShowThumbs(true);
         _displayTextManager.ShowText(true);
         _displayTextManager.UpdateSizeText();
         _thumbManager.UpdateThumbsPosition();
         OnRectangleLocationChangedEvent?.Invoke(_rectangleManager, new LocationChangedEventArgs()
         {
             NewLocation = e.GetPosition(_originalCanvas)
         });
     }
 }