cela peut être plus une question de logique que de syntaxe, donc je ne sais pas si quelqu'un serait prêt à aider mais j'ai une liste de type Rectangle que j'ai besoin de boucler et de passer à travers.C# redessiner les rectangles logiques
la liste contient une plage aléatoire de rectangles de gauche à droite avec des largeurs et hauteurs aléatoires, par ex.
___________
____ 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
J'ai besoin de faire tourner les rectangles afin qu'ils ressemblent à ce qui suit
___________ ____ l l l l l l l l ________ l l l__l___l______l l l l_____________l___l_________l l___________________________l
donc je pense que le moyen le plus simple est de prendre le premier rectangle et le comparer à le prochain le long. Cependant, lorsque je tente d'obtenir les valeurs du prochain rectangle le long je reste bloqué parce que je vais la gamme des indices possibles
Voici le code pour dessiner les rectangles originaux qui fonctionne comme il est censé
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;
}
Je tente d'utiliser le code suivant pour faire tourner les rectangles tout en conservant la même forme mais je reçois de toute évidence des erreurs de portée
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);
}
}
je dois regarder le rectangle en cours, si le prochain les rectangles sont plus élevés alors je connais le widt h doit augmenter mais il doit s'arrêter quand il atteint un rectangle inférieur à sa hauteur actuelle. Une fois qu'il atteint ce rectangle, il doit revenir en arrière et ne pas être le premier rectangle de la série.
Si vous avez des suggestions ou des idées sur une meilleure façon de redessiner les rectangles s'il vous plaît faites le moi savoir.