예제 #1
0
        public MoverManipulationEventArgs(UIElement sourceElement, RectManipulations manipulation)
        {
            sourceElement.AssertNotNull(nameof(sourceElement));

            SourceElement = sourceElement;
            Manipulation  = manipulation;
        }
예제 #2
0
        public static Cursor GetCursor(RectManipulations manipulations)
        {
            if (manipulations == RectManipulations.Move)
            {
                return(Cursors.SizeAll);
            }
            if (manipulations == RectManipulations.ResizeL || manipulations == RectManipulations.ResizeR)
            {
                return(Cursors.SizeWE);
            }
            if (manipulations == RectManipulations.ResizeT || manipulations == RectManipulations.ResizeB)
            {
                return(Cursors.SizeNS);
            }
            if (manipulations == (RectManipulations.ResizeL | RectManipulations.ResizeT) || manipulations == (RectManipulations.ResizeR | RectManipulations.ResizeB))
            {
                return(Cursors.SizeNWSE);
            }
            if (manipulations == (RectManipulations.ResizeL | RectManipulations.ResizeB) || manipulations == (RectManipulations.ResizeR | RectManipulations.ResizeT))
            {
                return(Cursors.SizeNESW);
            }

            return(Cursors.Arrow);
        }
예제 #3
0
        protected virtual bool HandlePerformManipulation(UIElement sourceElement, RectManipulations manipulations, Vector sizeVector, Vector positionVector)
        {
            var args = new MoverPerformManipulationEventArgs(sourceElement, manipulations, sizeVector, positionVector);

            PerformManipulation?.Invoke(this, args);

            return(!args.Cancel);
        }
예제 #4
0
        protected virtual bool HandleBeginManipulation(UIElement sourceElement, RectManipulations manipulations)
        {
            var args = new MoverManipulationEventArgs(sourceElement, manipulations);

            BeginManipulation?.Invoke(this, args);

            return(!args.Cancel);
        }
예제 #5
0
        public static void GetManipulationsVectors(RectManipulations manipulations, Point mousePos, Point prevMousePos, out Vector positionVector, out Vector sizeVector)
        {
            var deltaX = mousePos.X - prevMousePos.X;
            var deltaY = mousePos.Y - prevMousePos.Y;

            positionVector = new Vector(0, 0);
            sizeVector     = new Vector(0, 0);

            if (manipulations.HasFlag(RectManipulations.Move))
            {
                positionVector.X = deltaX;
                positionVector.Y = deltaY;
            }

            if (manipulations.HasFlag(RectManipulations.ResizeR))
            {
                sizeVector.X += deltaX;
            }

            if (manipulations.HasFlag(RectManipulations.ResizeB))
            {
                sizeVector.Y += deltaY;
            }

            if (manipulations.HasFlag(RectManipulations.ResizeL))
            {
                positionVector.X += deltaX;
                sizeVector.X     += -deltaX;
            }

            if (manipulations.HasFlag(RectManipulations.ResizeT))
            {
                positionVector.Y += deltaY;
                sizeVector.Y     += -deltaY;
            }
        }
 public MoverManipulationInfo(UIElement sourceElement, RectManipulations manipulations, Point prevMousePos)
 {
     SourceElement = sourceElement;
     Manipulations = manipulations;
     PrevMousePos  = prevMousePos;
 }
예제 #7
0
        protected virtual void HandleReleaseManipulation(UIElement sourceElement, RectManipulations manipulations)
        {
            var args = new MoverManipulationEventArgs(sourceElement, manipulations);

            ReleaseManipulation?.Invoke(this, args);
        }
예제 #8
0
 public MoverPerformManipulationEventArgs(UIElement sourceElement, RectManipulations manipulation, Vector sizeVector, Vector positionVector)
     : base(sourceElement, manipulation)
 {
     SizeVector     = sizeVector;
     PositionVector = positionVector;
 }