Example #1
0
        // Initialize the ResizingAdorner.
        public ResizeAdorner(Canvas adornedElement, PropDesigner vm, Rect bounds)
            : base(adornedElement)
        {
            this.vm = vm;
            _bounds = bounds;

            _visualChildren = new VisualCollection(this);

            // Call a helper method to initialize the Thumbs
            // with a customized cursors.
            BuildAdornerCorner(ref _topLeft, Cursors.SizeNWSE);
            BuildAdornerCorner(ref _topRight, Cursors.SizeNESW);
            BuildAdornerCorner(ref _bottomLeft, Cursors.SizeNESW);
            BuildAdornerCorner(ref _bottomRight, Cursors.SizeNWSE);

            BuildAdornerCorner(ref _middleTop, Cursors.SizeNS);
            BuildAdornerCorner(ref _middleRight, Cursors.SizeWE);
            BuildAdornerCorner(ref _middleBottom, Cursors.SizeNS);
            BuildAdornerCorner(ref _middleLeft, Cursors.SizeWE);

            BuildAdornerCorner(ref _centerDrag, Cursors.SizeAll);

            Style s = (Style)vm.FindResource("RotateThumbStyle");

            BuildAdornerCorner(ref _rotate, Cursors.Hand, s);

            // Add handlers for resizing.
            _bottomLeft.DragDelta  += HandleBottomLeft;
            _bottomRight.DragDelta += HandleBottomRight;
            _topLeft.DragDelta     += HandleTopLeft;
            _topRight.DragDelta    += HandleTopRight;

            _middleTop.DragDelta   += HandleMiddleTop;
            _middleRight.DragDelta += HandleMiddleRight;

            _middleBottom.DragDelta += HandleMiddleBottom;
            _middleLeft.DragDelta   += HandleMiddleLeft;

            _centerDrag.DragDelta   += HandleCenterDrag;
            _centerDrag.DragStarted += _centerDrag_DragStarted;

            _rotate.DragDelta += HandleRotate;

            _rotationCenter         = Center(Bounds);
            _rotateTransform        = new RotateTransform(_rotationAngle, _rotationCenter.X, _rotationCenter.Y);
            _reverseRotateTransform = new RotateTransform(_rotationAngle, _rotationCenter.X, _rotationCenter.Y);
        }