Предполагая, что B полностью содержится в A, это будет что-то вроде:
Rectangle[] GetSurrounding( Rectangle outer, Rectangle inner )
{
Rectangle left, top, right, bottom; // Initialize all of these...
left = new Rectangle( outer.Left, outer.Top, outer.Height, inner.Left - outer.Left );
top = new Rectangle( inner.Left, outer.Top, inner.Top - outer.Top, inner.Width );
// So on and so forth...
return new Rectangle[]{ left, top, right, bottom };
}
// This assumes:
Rectangle( x , y , height, width ); // Constructor
Кроме того, при выборе погодных условий вы растягиваете левый и правый прямоугольники на всю высоту, а верхний и нижний прямоугольники на всю ширину - произвольно, и вам нужно будет либо принять постоянное решение, либо указать параметр метода. В других случаях, когда прямоугольники частично перекрываются, потребуется больше логики, глядя на значения MAX / MIN для проверки выхода за пределы и т. Д.