Я не вижу перегрузок для DrawRectangle, которые содержат разные типы данных:
http://msdn.microsoft.com/en-us/library/fxtkbx2d.aspx
Разная ширина не должна иметь значения, вы просто добавляете ширину текущего прямоугольника к X и рисуете следующий прямоугольник в этой позиции. (Если ваши прямоугольники в разных единицах, вам нужно предоставить больше информации в своем посте. Кто-то может помочь вам конвертировать единицы.)
Какой-то псевдокод:
current = new Rectangle(0, 0, 100, 50)
while (current.x + current.width) < page_width
DrawRectangle(Pens.Black, current.x, current.y, current.width, current.height)
current.x += current.width
current.width = width_of_next_rectangle
end while