Gelegentlich wirst du quadratische Rechtecke benötigen, die ganz in das Anzeigerechteck einer Zeichenebene passen. Die Herstellung eines solchen Rechtecks ist nicht schwer: Du bestimmst die kürzere Seite, stellst ein Exemplar von Size her, das diese kürzere Seite als x-Wert und als y-Wert enthält und erzeugst mit dieser Größenangabe ein neues Rechteck:
int seite; if (rechteck.Width < rechteck.Height) { seite = rechteck.Width; } else { seite = rechteck.Height; } Rectangle quadrat = new Rectangle(rechteck.Location, new Size(seite, seite));
Das kannst du kürzer schreiben, wenn du dich daran erinnerst, dass du in C# auf der rechten Seite einer Wertzuweisung einen bedingten Ausdruck schreiben darfst:
int seite = (rechteck.Width < rechteck.Height ? rechteck.Width : rechteck.Height); Rectangle quadrat = new Rectangle(rechteck.Location, new Size(seite, seite));
Wenn du ein Quadrat in einem rechteckigen Darstellungsbereich mittig platzieren willst, wird die Aufgabe geringfügig komplizierter, weil nicht nur die Quadratseite, sondern auch die Position des Quadrates berechnen musst. Dabei gehst du vom Quadratmittelpunkt aus und verwendest die halbe Seitenlänge um den Positionierungspunkt zu berechnen. Das geht so:
int hoehe = rechteck.Height; int breite = rechteck.Width; int mittelpunktX = breite / 2; int mittelpunktY = hoehe / 2; int halbseite = (hoehe < breite ? hoehe : breite) / 2; Rectangle bereich = new Rectangle(mittelpunktX - halbseite , mittelpunktY - halbseite , 2*halbseite, 2*halbseite );
Hier berechnest du zunächst den Mittelpunkt des Rechtecks, in dem du ein Quadrat mittig positionieren willst. Der Mittelpunkt des Rechtecks wird später auch der Mittelpunkt des Quadrats.
So dann bestimmst du in bekannter Weise die kleinere Rechteckseite. Diese Seite halbierst du, um die halbe Seitenlänge des Quadrats zu erhalten.
Jetzt kannst du die Bestimmungsstücke des Quadrats berechnen: