Пример #1
0
        public static Rectangle?TryUnion(this Rectangle r1, params Rectangle[] rs)
        {
            var       tmp    = rs.ToList();
            Rectangle result = r1;

            while (tmp.Count > 0)
            {
                bool foundAdjacent = false;
                for (int i = 0; i < tmp.Count; ++i)
                {
                    var r2 = tmp[i];
                    if (result.AdjacentTo(r2))
                    {
                        result = Rectangle.Union(result, r2);
                        tmp.RemoveAt(i);
                        foundAdjacent = true;
                        break;
                    }
                }
                if (!foundAdjacent)
                {
                    return(null);
                }
            }
            return(result);
        }