Пример #1
0
 public static Point PlaceByDirection(Rectangle master, Size slave, PlaceDirection direction, PlaceLevel level)
 {
     return(PlaceByDirection(master, slave, direction, level, DefaultMargin));
 }
Пример #2
0
        public static Point PlaceByDirection(Rectangle master, Size slave, PlaceDirection direction, PlaceLevel level, int margin)
        {
            Point directionValue = GetDirectionValue(direction);

            int[] xs = new int[3] {
                master.Left - slave.Width - margin, master.Left, master.Right + margin
            };
            int[] ys = new int[3] {
                master.Top - slave.Height - margin, master.Top, master.Bottom + margin
            };

            double levelValue = GetLevelValue(level);

            int x = xs[directionValue.X] + (directionValue.X == 1 ? (int)((master.Width - slave.Width) * levelValue) : 0);
            int y = ys[directionValue.Y] + (directionValue.Y == 1 ? (int)((master.Height - slave.Height) * levelValue) : 0);


            return(new Point(x, y));
        }
Пример #3
0
 public static Rectangle PlaceByDirection2(Rectangle master, Size slave, PlaceDirection direction, PlaceLevel level, int margin)
 {
     return(new Rectangle(PlaceByDirection(master, slave, direction, level, margin), slave));
 }
Пример #4
0
 public static double GetLevelValue(PlaceLevel level)
 {
     return(((int)level - 1) / 2.0D);
 }
Пример #5
0
 public static void PlaceByDirection(Control master, Control slave, PlaceDirection direction, PlaceLevel level)
 {
     PlaceByDirection(master, slave, direction, level, DrawingUtils.DefaultMargin);
 }
Пример #6
0
 public static void PlaceByDirection(Control master, Control slave, PlaceDirection direction, PlaceLevel level, int margin)
 {
     slave.Bounds = DrawingUtils.PlaceByDirection(master.Bounds, slave.Size, direction, level, margin);
 }
Пример #7
0
        public static Dictionary <Control, Rectangle> LayoutArray(Rectangle layoutBounds, ContentAlignment anchor, PlaceDirection direction, PlaceLevel level, int margin, IEnumerable <KeyValuePair <Control, Size> > collection)
        {
            var map   = new Dictionary <Control, Rectangle>();
            var array = collection.ToArray();

            if (array.Length > 0)
            {
                var maxWidth  = array.Max(c => c.Value.Width);
                var maxHeight = array.Max(c => c.Value.Height);
                var maxSize   = new Size(maxWidth, maxHeight);

                var first      = true;
                var lastBounds = new Rectangle();

                foreach (var pair in array)
                {
                    var control   = pair.Key;
                    var size      = pair.Value;
                    var newBounds = new Rectangle();

                    if (first == true)
                    {
                        first = false;
                        var directionValue = DrawingUtils.GetDirectionValue(direction) - new Size(1, 1);
                        var s       = new Size(directionValue.X != 0 ? size.Width : maxSize.Width, directionValue.Y != 0 ? size.Height : maxSize.Height);
                        var initial = new Rectangle(DrawingUtils.Alignment(s, layoutBounds, anchor), s);
                        newBounds = initial.InnerByDirection(size, direction, level, 0);
                    }
                    else
                    {
                        newBounds = lastBounds.PlaceByDirection(size, direction, level, margin);
                    }

                    map[control] = newBounds;
                    lastBounds   = newBounds;
                }
            }

            return(map);
        }
Пример #8
0
 public static Dictionary <Control, Rectangle> LayoutArray(Rectangle layoutBounds, ContentAlignment anchor, PlaceDirection direction, PlaceLevel level, int margin, IEnumerable <Control> collection)
 {
     return(LayoutArray(layoutBounds, anchor, direction, level, margin, collection.Select(c => new KeyValuePair <Control, Size>(c, c.PreferredSize))));
 }
        public static Rectangle InnerByDirection(this Rectangle master, Size slave, PlaceDirection direction, PlaceLevel level, int margin)
        {
            var directionValue = GetDirectionValue(direction);
            var xs             = new int[3] {
                master.Right - slave.Width - margin, master.Left, master.Left + margin
            };
            var ys = new int[3] {
                master.Bottom - slave.Height - margin, master.Top, master.Top + margin
            };
            var levelValue = GetLevelValue(level);

            var x = xs[directionValue.X] + (directionValue.X == 1 ? (int)((master.Width - slave.Width) * levelValue) : 0);
            var y = ys[directionValue.Y] + (directionValue.Y == 1 ? (int)((master.Height - slave.Height) * levelValue) : 0);

            return(new Rectangle(new Point(x, y), slave));
        }
 public static Rectangle InnerByDirection(this Rectangle master, Size slave, PlaceDirection direction, PlaceLevel level)
 {
     return(InnerByDirection(master, slave, direction, level, DefaultMargin));
 }
 public static double GetLevelValue(PlaceLevel level) => ((int)level - 1) / 2.0D;