private Rectangle[] SubdivideRectangle(Rectangle area,
int divisor,
int maxLength)
{
int length = Math.Min(area.Width / divisor, Math.Min(area.Height / divisor, maxLength));
// Find the left, right, top, bottom, center rectangles
return new Rectangle[]{ new Rectangle(area.X, area.Y, length, area.Height),
new Rectangle(area.Right - length, area.Y, length, area.Height),
new Rectangle(area.X, area.Y, area.Width, length),
new Rectangle(area.X, area.Bottom - length, area.Width, length),
new Rectangle(area.X + length, area.Y + length,
area.Width - length * 2, area.Height - length * 2)};
}