Verwenden der globalen Transformation

Die globale Transformation ist eine Eigenschaft der Graphics-Klasse. Die Zahlen, die die globale Transformation angeben, werden in einem Matrix-Objekt gespeichert, das eine 3×3-Matrix darstellt. Die Klassen Matrix und Graphics enthalten mehrere Methoden zum Festlegen der Zahlen in der globalen Transformationsmatrix.

Verschiedene Arten von Transformationen

Im folgenden Beispiel erstellt der Code zuerst ein 50×50-Rechteck und platziert es am Ursprung (0, 0). Der Ursprung befindet sich in der oberen linken Ecke des Clientbereichs.

Rectangle rect = new Rectangle(0, 0, 50, 50);
Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2);
e.Graphics.DrawRectangle(pen, rect);
Dim rect As New Rectangle(0, 0, 50, 50)
Dim pen As New Pen(Color.FromArgb(128, 200, 0, 200), 2)
e.Graphics.DrawRectangle(pen, rect)

Der folgende Code wendet eine Skalierungstransformation an, die das Rechteck um einen Faktor von 1,75 in der X-Richtung streckt und das Rechteck um einen Faktor von 0,5 in der Y-Richtung verkleinert:

e.Graphics.ScaleTransform(1.75f, 0.5f);
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ScaleTransform(1.75F, 0.5F)
e.Graphics.DrawRectangle(pen, rect)

Das Ergebnis ist ein Rechteck, das in der X-Richtung länger und in der Y-Richtung kürzer ist als das Original.

Um das Rechteck zu drehen, anstatt es zu skalieren, verwenden Sie den folgenden Code:

e.Graphics.ResetTransform();
e.Graphics.RotateTransform(28); // 28 degrees
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ResetTransform()
e.Graphics.RotateTransform(28) ' 28 degrees
e.Graphics.DrawRectangle(pen, rect)

Für eine Translation des Rechtecks verwenden Sie den folgenden Code:

e.Graphics.ResetTransform();
e.Graphics.TranslateTransform(150, 150);
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ResetTransform()
e.Graphics.TranslateTransform(150, 150)
e.Graphics.DrawRectangle(pen, rect)

Weitere Informationen