это может быть больше вопросом логики, чем синтаксиса, так что я не знаю, захочет ли кто-нибудь помочь, но у меня есть список типа Rectangle, который мне нужно перебрать назад и вперед.
список содержит случайный диапазон прямоугольников слева направо со случайной шириной и высотой, например,
___________
____ l l
l l l l
l l ________ l l
l l___l l l l
l l l l___l l
l__l___l______l___l_________l
Мне нужно повернуть прямоугольники, чтобы они выглядели следующим образом
___________
____ l l
l l l l
l l ________ l l
l__l___l______l l l
l_____________l___l_________l
l___________________________l
Так что я думаю, что самый простой способ сделать это - взять первый прямоугольник и сравнить его со следующим. Однако, когда я пытаюсь получить значения следующего прямоугольника, я застреваю, потому что я выхожу из диапазона возможных индексов
Это код для рисования оригинальных прямоугольников, который работает так, как это и задумано
Graphics RectangleGraphics = DrawingSurface;
for (int x = 0; x < userInput; ++x)
{
int Height = myRectangleClass.genHeight();
int Width = myRectangleClass.genWidth();
RectangleGraphics.DrawRectangle(Pen, myRectangleClass.MyRectangle(startPositionX, (450 - Height), Width, Height));
ReadWrite.writeOutput(startPositionX, (450 - Height), Width, Height);
startPositionX = startPositionX + Width;
}
Я пытаюсь использовать следующий код для поворота прямоугольников, сохраняя при этом ту же форму, но я, очевидно, выхожу из диапазона ошибок
Graphics RectangleGraphics = DrawingSurface;
int previousX = 0;
int width = 0;
int height = 0;
int xCoordinate = 0;
int yCoordinate = 0;
for (int i = 0; i < Rectangles.Count; ++i)
{
if ((Rectangles[i].X < Rectangles[i + 1].X) && (Rectangles[i].Height > Rectangles[i + 1].Height))
{
width = Rectangles[i].Width;
height = Rectangles[i].Height - Rectangles[i + 1].Height;
xCoordinate = Rectangles[i].X;
yCoordinate = 250 - height;
Rectangle DrawRec = myRectangleClass.MyRectangle(xCoordinate, yCoordinate, width, height);
RectangleGraphics.DrawRectangle(Pen, DrawRec);
}
}
Мне нужно посмотреть на текущий прямоугольник, если следующие прямоугольники больше, то я знаю, что ширина должна увеличиться, но она должна остановиться, когда достигнет прямоугольника, который ниже текущей высоты. Как только он достигает этого прямоугольника, ему нужно двигаться назад, если это не первый прямоугольник в серии.
Если у вас есть предложения или идеи относительно лучшего способа перерисовать прямоугольники, пожалуйста, сообщите мне.