public static Point PlaceByDirection(Rectangle master, Size slave, PlaceDirection direction, PlaceLevel level) { return(PlaceByDirection(master, slave, direction, level, DefaultMargin)); }
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)); }
public static Rectangle PlaceByDirection2(Rectangle master, Size slave, PlaceDirection direction, PlaceLevel level, int margin) { return(new Rectangle(PlaceByDirection(master, slave, direction, level, margin), slave)); }
public static double GetLevelValue(PlaceLevel level) { return(((int)level - 1) / 2.0D); }
public static void PlaceByDirection(Control master, Control slave, PlaceDirection direction, PlaceLevel level) { PlaceByDirection(master, slave, direction, level, DrawingUtils.DefaultMargin); }
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); }
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); }
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;