Example #1
0
        public Point PointFromOffset(MouseTool.ResizingTypes resizingType, Point location, double angle)
        {
            MouseTool.ResizingTypes pointSide = (MouseTool.ResizingTypes)Math.Floor(angle);
            double dec;

            if (pointSide.HasFlag(MouseTool.ResizingTypes.Left) && pointSide.HasFlag(MouseTool.ResizingTypes.Right) ||
                pointSide.HasFlag(MouseTool.ResizingTypes.Top) && pointSide.HasFlag(MouseTool.ResizingTypes.Bottom))
            {
                pointSide--;
                dec = 1d;
            }
            else
            {
                dec = angle - (double)pointSide;
            }
            Point res = location;

            if (pointSide.HasFlag(MouseTool.ResizingTypes.Left))
            {
                if (resizingType.HasFlag(MouseTool.ResizingTypes.Left))
                {
                    res.X = rect.Left;
                }
                if ((resizingType.HasFlag(MouseTool.ResizingTypes.Top) || resizingType.HasFlag(MouseTool.ResizingTypes.Bottom)) && !pointSide.HasFlag(MouseTool.ResizingTypes.Bottom))
                {
                    res.Y = rect.Y + (int)(dec * rect.Height);
                }
            }
            else if (pointSide.HasFlag(MouseTool.ResizingTypes.Right))
            {
                if (resizingType.HasFlag(MouseTool.ResizingTypes.Right))
                {
                    res.X = rect.Right;
                }
                if ((resizingType.HasFlag(MouseTool.ResizingTypes.Top) || resizingType.HasFlag(MouseTool.ResizingTypes.Bottom)) && !pointSide.HasFlag(MouseTool.ResizingTypes.Top))
                {
                    res.Y = rect.Y + (int)(dec * rect.Height);
                }
            }
            if (pointSide.HasFlag(MouseTool.ResizingTypes.Top))
            {
                if (resizingType.HasFlag(MouseTool.ResizingTypes.Top))
                {
                    res.Y = rect.Top;
                }
                if ((resizingType.HasFlag(MouseTool.ResizingTypes.Left) || resizingType.HasFlag(MouseTool.ResizingTypes.Right)) && !pointSide.HasFlag(MouseTool.ResizingTypes.Right))
                {
                    res.X = rect.X + (int)(dec * rect.Width);
                }
            }
            else if (pointSide.HasFlag(MouseTool.ResizingTypes.Bottom))
            {
                if (resizingType.HasFlag(MouseTool.ResizingTypes.Bottom))
                {
                    res.Y = rect.Bottom;
                }
                if ((resizingType.HasFlag(MouseTool.ResizingTypes.Left) || resizingType.HasFlag(MouseTool.ResizingTypes.Right)) && !pointSide.HasFlag(MouseTool.ResizingTypes.Left))
                {
                    res.X = rect.X + (int)(dec * rect.Width);
                }
            }
            return(res);
        }