Matrix Klasse

Definition

Kapselt eine 3:3-affine Matrix, die eine geometrische Transformation darstellt. Diese Klasse kann nicht vererbt werden.

public ref class Matrix sealed : MarshalByRefObject, IDisposable
public sealed class Matrix : MarshalByRefObject, IDisposable
type Matrix = class
    inherit MarshalByRefObject
    interface IDisposable
Public NotInheritable Class Matrix
Inherits MarshalByRefObject
Implements IDisposable
Vererbung
Implementiert

Hinweise

Die Matrix Klasse kapselt eine 3:3-affine Matrix, die eine geometrische Transformation darstellt.

In GDI+ können Sie eine affine Transformation in einem Matrix Objekt speichern. Da die dritte Spalte einer Matrix, die eine affine Transformation darstellt, immer (0, 0, 1) ist, geben Sie nur die sechs Zahlen in den ersten beiden Spalten an, wenn Sie ein Matrix-Objekt erstellen. Die Anweisung Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) erstellt die matrix, die in der folgenden Abbildung dargestellt ist.

Matrix.

Note

In .NET 6 und höheren Versionen wird das System.Drawing.Common-Paket, das diesen Typ enthält, nur unter Windows-Betriebssystemen unterstützt. Die Verwendung dieses Typs in plattformübergreifenden Apps führt zu Kompilierungszeitwarnungen und Laufzeit-Ausnahmen. Weitere Informationen finden Sie unter System.Drawing.Common wird nur unter Windows unterstützt.

Zusammengesetzte Transformationen

Eine zusammengesetzte Transformation ist eine Sequenz von Transformationen, eine nach der anderen. Betrachten Sie die Matrizen und Transformationen in der folgenden Liste:

Matrix Umwandlung
Matrix A Um 90 Grad drehen
Matrix B Um den Faktor 2 in x-Richtung skalieren
Matrix C Um drei Einheiten entlang der y-Achse verschieben

Wenn Sie mit dem Punkt (2, 1) beginnen - dargestellt durch die Matrix [2 1 1] - und multiplizieren sie mit A, dann B, dann C, der Punkt (2, 1) wird den drei Transformationen in der aufgeführten Reihenfolge unterzogen.

[2 1 1]ABC = [-2 5 1]

Anstatt die drei Teile der zusammengesetzten Transformation in drei separaten Matrizen zu speichern, können Sie A, B und C zusammen multiplizieren, um eine einzelne 3×3-Matrix zu erhalten, die die gesamte zusammengesetzte Transformation speichert. Angenommen ABC = D. Dann gibt ein mit D multiplizierter Punkt dasselbe Ergebnis wie ein mit A multiplizierter Punkt, dann B und dann C.

[2 1 1]D = [-2 5 1]

Die folgende Abbildung zeigt die Matrizen A, B, C und D.

Matrizen A, B, C und D

Die Tatsache, dass die Matrix einer zusammengesetzten Transformation durch Multiplizieren der einzelnen Transformationsmatrizen gebildet werden kann, bedeutet, dass jede Sequenz von affinen Transformationen in einem einzigen Matrix-Objekt gespeichert werden kann.

Caution

Die Reihenfolge einer zusammengesetzten Transformation ist wichtig. Im Allgemeinen ist Drehen > Skalieren > Verschieben nicht das Gleiche wie Skalieren > Drehen > Verschieben. Ebenso ist die Reihenfolge der Matrixmultiplikation wichtig. Im Allgemeinen ist ABC nicht mit BAC identisch.

Die Matrix Klasse bietet verschiedene Methoden zum Erstellen einer zusammengesetzten Transformation: Multiply, Rotate, RotateAt, Scale, Shearund Translate. Im folgenden Beispiel wird die Matrix einer zusammengesetzten Transformation erstellt. Dabei wird zuerst eine 30-Grad-Drehung durchgeführt. Danach folgen eine Skalierung um den Faktor 2 in y-Richtung und eine Verschiebung um fünf Einheiten in x-Richtung:

Matrix myMatrix = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);
Dim myMatrix As New Matrix()
myMatrix.Rotate(30)
myMatrix.Scale(1, 2, MatrixOrder.Append)
myMatrix.Translate(5, 0, MatrixOrder.Append)

Konstruktoren

Name Beschreibung
Matrix()

Initialisiert eine neue Instanz der Matrix Klasse als Identitätsmatrix.

Matrix(Matrix3x2)

Erstellt eine Matrix unter Verwendung der angegebenen matrix.

Matrix(Rectangle, Point[])

Initialisiert eine neue Instanz der Matrix Klasse auf die geometrische Transformation, die durch das angegebene Rechteck und das Array von Punkten definiert wird.

Matrix(RectangleF, PointF[])

Initialisiert eine neue Instanz der Matrix Klasse auf die geometrische Transformation, die durch das angegebene Rechteck und das Array von Punkten definiert wird.

Matrix(Single, Single, Single, Single, Single, Single)

Initialisiert eine neue Instanz der Matrix Klasse mit den angegebenen Elementen.

Eigenschaften

Name Beschreibung
Elements

Ruft ein Array von Gleitkommawerten ab, die die Elemente dieses Matrixdarstellt.

IsIdentity

Ruft einen Wert ab, der angibt, ob diese Matrix die Identitätsmatrix ist.

IsInvertible

Ruft einen Wert ab, der angibt, ob diese Matrix invertierbar ist.

MatrixElements

Ruft die Elemente für die Matrix ab oder legt sie fest.

OffsetX

Ruft den x-Übersetzungswert (der dx-Wert oder das Element in der dritten Zeile und der ersten Spalte) dieses Matrixab.

OffsetY

Ruft den y-Übersetzungswert (der Dy-Wert oder das Element in der dritten Zeile und zweiten Spalte) dieses Matrixab.

Methoden

Name Beschreibung
Clone()

Erstellt eine genaue Kopie dieses MatrixElements.

CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
Dispose()

Gibt alle von diesem MatrixRessourcen verwendeten Ressourcen frei.

Equals(Object)

Testet, ob das angegebene Objekt ein Matrix ist und mit diesem Matrixidentisch ist.

Finalize()

Ermöglicht es einem Objekt, Ressourcen freizugeben und andere Bereinigungsvorgänge auszuführen, bevor es von der Garbage Collection erneut beansprucht wird.

GetHashCode()

Gibt einen Hashcode zurück.

GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
Invert()

Invertiert diese Matrix, wenn sie unvertierbar ist.

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekts.

(Geerbt von MarshalByRefObject)
Multiply(Matrix, MatrixOrder)

Multipliziert diese Matrix mit der im matrix Parameter angegebenen Matrix und in der im order Parameter angegebenen Reihenfolge.

Multiply(Matrix)

Multipliziert diese Matrix mit der im matrix Parameter angegebenen Matrix, indem die angegebene Matrixvorausgestellt wird.

Reset()

Setzt diese Matrix zurück, damit die Elemente der Identitätsmatrix vorhanden sind.

Rotate(Single, MatrixOrder)

Wendet eine Drehung im Uhrzeigersinn eines im angle-Parameter angegebenen Betrags um den Ursprung (Null x- und y-Koordinaten) für diese Matrixan.

Rotate(Single)

Wird dieser Matrix eine Drehung im Uhrzeigersinn um den Ursprung und durch den angegebenen Winkel vorangestellt.

RotateAt(Single, PointF, MatrixOrder)

Wendet eine Drehung im Uhrzeigersinn um den angegebenen Punkt auf diese Matrix in der angegebenen Reihenfolge an.

RotateAt(Single, PointF)

Wendet eine Drehung im Uhrzeigersinn auf diese Matrix um den im parameter point angegebenen Punkt und durch Vorausstehen der Drehung an.

Scale(Single, Single, MatrixOrder)

Wendet den angegebenen Skalierungsvektor (scaleX und scaleY) auf diese Matrix mithilfe der angegebenen Reihenfolge an.

Scale(Single, Single)

Wendet den angegebenen Skalierungsvektor auf diese Matrix an, indem der Skalierungsvektor voraussteht.

Shear(Single, Single, MatrixOrder)

Wendet den angegebenen Schervektor auf diese Matrix in der angegebenen Reihenfolge an.

Shear(Single, Single)

Wendet den angegebenen Schervektor auf diese Matrix an, indem die Schubtransformation voraussteht.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TransformPoints(Point[])

Wendet die geometrische Transformation, die durch diese Matrix dargestellt wird, auf ein angegebenes Array von Punkten an.

TransformPoints(PointF[])

Wendet die geometrische Transformation, die durch diese Matrix dargestellt wird, auf ein angegebenes Array von Punkten an.

TransformPoints(ReadOnlySpan<Point>)

Wendet die geometrische Transformation, die durch diese Matrix dargestellt wird, auf ein angegebenes Array von Punkten an.

TransformPoints(ReadOnlySpan<PointF>)

Wendet die geometrische Transformation, die durch diese Matrix dargestellt wird, auf ein angegebenes Array von Punkten an.

TransformVectors(Point[])

Wendet nur die Skalierungs- und Drehkomponenten dieses Matrix auf das angegebene Array von Punkten an.

TransformVectors(PointF[])

Multipliziert jeden Vektor in einem Array mit der Matrix. Die Übersetzungselemente dieser Matrix (dritte Zeile) werden ignoriert.

TransformVectors(ReadOnlySpan<Point>)

Multipliziert jeden Vektor in einem Array mit der Matrix. Die Übersetzungselemente dieser Matrix (dritte Zeile) werden ignoriert.

TransformVectors(ReadOnlySpan<PointF>)

Multipliziert jeden Vektor in einem Array mit der Matrix. Die Übersetzungselemente dieser Matrix (dritte Zeile) werden ignoriert.

Translate(Single, Single, MatrixOrder)

Wendet den angegebenen Übersetzungsvektor auf diese Matrix in der angegebenen Reihenfolge an.

Translate(Single, Single)

Wendet den angegebenen Übersetzungsvektor (offsetX und offsetY) auf diese Matrix an, indem der Übersetzungsvektor voraussteht.

VectorTransformPoints(Point[])

Multipliziert jeden Vektor in einem Array mit der Matrix. Die Übersetzungselemente dieser Matrix (dritte Zeile) werden ignoriert.

VectorTransformPoints(ReadOnlySpan<Point>)

Multipliziert jeden Vektor in einem Array mit der Matrix. Die Übersetzungselemente dieser Matrix (dritte Zeile) werden ignoriert.

Gilt für:

Weitere Informationen