Gelegentlich ist es erforderlich,
Eine verkleinerte Kopie brauchst du zum Beispiel, wenn du den Darstellungsbereich einer Zeichenebene nicht voll ausnutzen möchtest, sondern allseitig einen Rand freilassen willst. Für die einfache Lösung dieser Aufgabe verwendest du die Methode Inflate(). Inflate() ist eine statische Methode in den Klassen Rectangle und RectangleF.
Beispiel für Inflate():
Rectangle rechteck = new Rectangle(new Point(100, 100), new Size(200, 100)); Rectangle r = Rectangle.Inflate(rechteck, 20, 40);
Hier wird ein Rechteck in der Waagerechten zu beiden Seiten um je 20 Pixel vergrößert; in der Senkrechten beträgt die Vergrößerung nach oben und unten je 40 Pixel. Das neue Rechteck entspricht genau diesem:
Rectangle rechteck = new Rectangle(new Point(80, 60), new Size(240, 180));
Die Zeichnung zeigt die Wirkung der Methode Inflate() im angegebenen Beispiel. Das ursprüngliche Rechteck ist schwarz gezeichnet, das vergrößerte Rechteck rot:
Wenn du die in diesem Beispiel erklärte Wirkung von Inflate() selbst ausprobieren willst, verwendest du dieses Programmstück:
// Herstellen der Rechtecke Rectangle r1 = new Rectangle(new Point(100, 100), new Size(200, 100)); Rectangle r2 = Rectangle.Inflate(r1, 20, 40); // Herstellen eines schwarzen Stiftes using (Pen stift = new Pen(Color.Black, 1.0f)) { g.DrawRectangle(stift, r1); stift.Color = Color.Red; // Stiftfarbe ändern g.DrawRectangle(stift, r2); }
In dem gezeigten Beispiel wird die Methode Inflate an die Klasse Rectangle gesendet. Methoden, die in dieser Weise aufzurufen sind, werden statische Methoden genannt. Das Rechteck, von dem eine vergrößerte Kopie hergestellt werden soll, wird der statischen Methode als Argument übergeben.
Negative Korrekturwerte in Inflate() bewirken die Herstellung eines verkleinerten Rechtecks:
Rectangle rechteck = new Rectangle(new Point(100, 100), new Size(200, 100)); Rectangle r = Rectangle.Inflate(rechteck, -20, -40);
Hier wird ein Rechteck in der Waagerechten zu beiden Seiten um je 20 Pixel verkleinert; in der Senkrechten beträgt die Verkleinerung nach oben und unten je 40 Pixel. Das neue Rechteck entspricht genau diesem:
Rectangle rechteck = new Rectangle(new Point(120, 140), new Size(160, 20));
Die Zeichnung zeigt die Wirkung der Methode Inflate() im angegebenen Beispiel. Das ursprüngliche Rechteck ist schwarz gezeichnet, das verkleinerte Rechteck rot:
Wenn du die in diesem Beispiel erklärte Wirkung von Inflate() selbst ausprobieren willst, verwendest du dieses Programmstück:
Rectangle r1 = new Rectangle(new Point(100, 100), new Size(200, 100)); Rectangle r2 = Rectangle.Inflate(r1, -20, -40); using (Pen stift = new Pen(Color.Black, 1.0f)) { g.DrawRectangle(stift, r1); stift.Color = Color.Red; g.DrawRectangle(stift, r2); }
In späteren Beispielen wirst du Inflate() mit negativen Korrekturwerten häufiger verwenden.
Wenn du die Methode Inflate mit einem positiven und einem negativen Korrekturwert aufrufst, erzeugst du ein neues Rechteck, da längs einer Koordinate vergrößert und längs der anderen Koordinate verkleinert wird.
Die statische Methode Inflate erzeugt eine Kopie eines gegebenen Rechtecks. Die Position und die Größe des kopierten Rechtecks werden ver&aUml;ndert; das gegebene Rechteck bleibt unverändert.
Es ist auch möglich, die Position und die Größe eines Rechtecks zu verändern, ohne eine Kopie herzustellen. Die Methode, die du zu diesem Zweck verwendest, heißt ebenfalls, Inflate, sie wird aber an das Rechteck gesendet, das du verändern möchtest:
Rectangle rechteck = new Rectangle(new Point(100, 100), new Size(200, 100)); rechteck.Inflate(20, 40);
Rectangle rechteck = new Rectangle(new Point(100, 100), new Size(200, 100)); rechteck.Inflate(-20, -40);
Es gibt zwei Methoden mit dem Namen Inflate, die sorgfältig zu unterscheiden sind:
Die statische Methode Inflate erzeugt ein neues Rechteck; dieses neue Rechteck ist auch das Ergebnis der Methode.
Der Aufruf ist an die Klasse Rectangle zu richten.
Die nichtstatische Methode Inflate verändert den Platzierungspunkt und die Größe eines Rechtecks. Diese Methode liefert kein Aufrufergebnis.
Der Aufruf wird an das Rechteck gerichtet, das vergrößert oder verkleinert werden soll.