这可能是更多的逻辑问题比语法,所以我不知道是否有人愿意帮助,但我有一个类型的矩形列表,我需要循环回来和转发。C#重绘矩形逻辑
该列表包含从左到右随机宽度和高度的随机范围的矩形,例如,
___________
____ 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);
}
}
我需要看看目前的矩形,如果未来矩形更高,然后我知道widt h需要增加,但当它到达一个低于当前高度的矩形时,它需要停止。一旦到达该矩形,它就需要向后移动而不是该系列中的第一个矩形。
如果您有更好的方法来重绘矩形的任何建议或想法,请让我知道。