Rectangle.DrawLines zeichnet den letzten und ersten Punkt auch

DrMueller

Erfahrenes Mitglied
Hallo Leute,

neues Jahr, neues Glück, neues Spiel: Ich programmiere gerade Box-Up. Kann man z.B. unter
http://www.langeneggers.ch/spielecke/games/771/Box_up.html

spielen.

Nun möchte ich in diesen Vierecken ein Viereck zeichen mit einer Seite offen,
Allerdings scheint der letzte und der erste Punkt sich zu verbinden. Ich mach dies so:
Ich habe ein Objekt und definiere die Grösse (Gross oder Klein). Das Viereck für das Feld gebe ich als ParentRectangle mit.
Die Punkte erstelle ich dann wie folgt:

Code:
            int square_Distance;
            Point[] points = new Point[6];
            int arrayIndex = 0;
            Point pt1;
            Point pt2;

            if (FieldSize == Box_Up.FieldSize.Large)
                square_Distance = 3;
            else
                square_Distance = 13;

            if (openLocation != Direction.Up)
            {
                //Oben
                pt1 = new Point(parentSquare.X + square_Distance, parentSquare.Y + square_Distance);
                pt2 = new Point(parentSquare.X + Game.FIELD_SQUARE_SIZE - (square_Distance), parentSquare.Y + square_Distance);
                points[arrayIndex] = pt1;
                arrayIndex++;
                points[arrayIndex] = pt2;
                arrayIndex++;
            }

            if (openLocation != Direction.Right)
            {
                //Rechts
                pt1 = new Point(parentSquare.X + Game.FIELD_SQUARE_SIZE - (square_Distance), parentSquare.Y + square_Distance);
                pt2 = new Point(parentSquare.X + Game.FIELD_SQUARE_SIZE - (square_Distance), parentSquare.Y + Game.FIELD_SQUARE_SIZE - (square_Distance));
                points[arrayIndex] = pt1;
                arrayIndex++;
                points[arrayIndex] = pt2;
                arrayIndex++;
            }

            if (openLocation != Direction.Down)
            {
                //Unten
                pt1 = new Point(parentSquare.X + square_Distance, parentSquare.Y + Game.FIELD_SQUARE_SIZE - square_Distance);
                pt2 = new Point(parentSquare.X + Game.FIELD_SQUARE_SIZE - (square_Distance), parentSquare.Y + Game.FIELD_SQUARE_SIZE - square_Distance);
                points[arrayIndex] = pt1;
                arrayIndex++;
                points[arrayIndex] = pt2;
                arrayIndex++;
            }

            if (openLocation != Direction.Left)
            {
                //Links
                pt1 = new Point(parentSquare.X + square_Distance, parentSquare.Y + square_Distance);
                pt2 = new Point(parentSquare.X + square_Distance, parentSquare.Y + Game.FIELD_SQUARE_SIZE - (square_Distance));
                points[arrayIndex] = pt1;
                arrayIndex++;
                points[arrayIndex] = pt2;
                arrayIndex++;
            }

            return points;


Nun scheint sich jedoch der letzte Punkt mit dem ersten zu verbinden, was teils interessante Strukturen zeichnet, allerdings nicht die gewünschten.


Meine Frage ist nun: Kann ich das überhaupt mit DrawLines so realisieren oder muss ich effektiv jede einzelne Linie zeichnen? Wäre doch relativ viel Code, und ich meine dazu ist ja DrawLines da?

Wie immer vielen Dank im Voraus und einen guten Start ins neue Jahr.


Müller Matthias
 
Ahso hab mir da was falsch vorgestellt. DrawLines funktioniert wie Malen nach Zahlen, daher muss wohl auch die Reihenfolge richtig sein.
Mache ich es mit einzelnen DrawLine.

Danke.
 
Zurück