【发布时间】:2012-03-14 06:26:47
【问题描述】:
这可能更多的是逻辑问题而不是语法问题,所以我不知道是否有人愿意提供帮助,但我有一个 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);
}
}
我需要查看当前矩形,如果下一个矩形更高,那么我知道宽度需要增加,但是当它到达低于当前高度的矩形时需要停止。一旦到达那个矩形,它就需要向后移动,以防它不是系列中的第一个矩形。
如果您对重新绘制矩形的更好方法有任何建议或想法,请告诉我。
【问题讨论】: