Matrix Klasse

Definition

Kapselt eine affine 3 x 3-Matrix ein, 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

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 in der folgenden Abbildung gezeigte Matrix.

Transformationstransformationen

Hinweis

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 verursacht Kompilierzeitwarnungen und Laufzeitausnahmen. 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). Sehen Sie sich die Matrizen und Transformationen in der folgenden Liste an:

Matrix A Um 90 Grad drehen
Matrix B Um den Faktor 2 in x-Richtung skalieren
Matrix C Drei Einheiten in y-Richtung verschieben

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

[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 gemeinsam multiplizieren, um eine einzelne 3×3-Matrix zu erhalten, die die gesamte zusammengesetzte Transformation speichert. Wenn ABC = D ist, liefert ein mit D multiplizierter Punkt das gleiche Ergebnis wie ein Punkt, der mit A, mit B und anschließend mit C multipliziert wird.

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

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

Transformationstransformationen

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

Achtung

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

Die Klasse Matrix bietet mehrere Methoden zur Erstellung einer zusammengesetzten Transformation: Multiply, Rotate, RotateAt, Scale, Shear und 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

Matrix()

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

Matrix(Matrix3x2)

Erstellt eine Matrix unter Verwendung des angegebenen matrix.

Matrix(Rectangle, Point[])

Initialisiert eine neue Instanz der Matrix-Klasse für die geometrische Transformation, die durch das angegebene Rechteck und Punktearray definiert ist.

Matrix(RectangleF, PointF[])

Initialisiert eine neue Instanz der Matrix-Klasse für die geometrische Transformation, die durch das angegebene Rechteck und Punktearray definiert ist.

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

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

Eigenschaften

Elements

Ruft ein Array von Gleitkommawerten ab, das die Elemente dieser Matrix darstellt.

IsIdentity

Ruft einen Wert ab, der angibt, ob es sich bei Matrix um die Identitätsmatrix handelt.

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 Wert der Verschiebung in x-Richtung (der dx-Wert bzw. das Element in der dritten Zeile und ersten Spalte) dieser Matrix ab.

OffsetY

Ruft den Wert der Verschiebung in y-Richtung (den dy-Wert bzw. das Element in der dritten Zeile und zweiten Spalte) der Matrix ab.

Methoden

Clone()

Erstellt eine genaue Kopie von dieser Matrix.

CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.

(Geerbt von MarshalByRefObject)
Dispose()

Gibt alle von dieser Matrix verwendeten Ressourcen frei.

Equals(Object)

Überprüft, ob das angegebene Objekt eine Matrix und mit dieser Matrix identisch ist.

Finalize()

Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird.

GetHashCode()

Gibt einen Hashcode zurück.

GetLifetimeService()
Veraltet.

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

(Geerbt von MarshalByRefObject)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.

(Geerbt von MarshalByRefObject)
Invert()

Invertiert diese Matrix, sofern sie invertierbar ist.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.

(Geerbt von MarshalByRefObject)
Multiply(Matrix)

Multipliziert diese Matrix mit der im matrix-Parameter angegebenen Matrix, wobei die angegebene Matrix vorangestellt wird.

Multiply(Matrix, MatrixOrder)

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

Reset()

Setzt diese Matrix zurück, sodass sie die Elemente der Identitätsmatrix enthält.

Rotate(Single)

Stellt dieser Matrix eine Drehung im Uhrzeigersinn um den Ursprung mit dem angegebenen Drehwinkel voran.

Rotate(Single, MatrixOrder)

Weist dieser angle eine Drehung im Uhrzeigersinn um den Ursprung (x- und y-Koordinate sind  0 (null)) mit einem im Matrix-Parameter angegebenen Drehwinkel zu.

RotateAt(Single, PointF)

Weist dieser Matrix eine Drehung im Uhrzeigersinn um den im point-Parameter angegebenen Punkt zu, wobei die Drehung vorangestellt wird.

RotateAt(Single, PointF, MatrixOrder)

Weist dieser Matrix eine Drehung im Uhrzeigersinn um den angegebenen Punkt in der angegebenen Reihenfolge zu.

Scale(Single, Single)

Weist den angegebenen Skalierungsvektor dieser Matrix zu, wobei der Skalierungsvektor vorangestellt wird.

Scale(Single, Single, MatrixOrder)

Weist den angegebenen Skalierungsvektor (scaleX und scaleY) der Matrix in der angegebenen Reihenfolge zu.

Shear(Single, Single)

Weist den angegebenen Scherungsvektor der Matrix zu, wobei die Scherungstransformation vorangestellt wird.

Shear(Single, Single, MatrixOrder)

Weist den angegebenen Scherungsvektor dieser Matrix in der angegebenen Reihenfolge zu.

ToString()

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

(Geerbt von Object)
TransformPoints(Point[])

Weist die von dieser Matrix dargestellte geometrische Transformation einem angegebenen Punktearray zu.

TransformPoints(PointF[])

Weist die von dieser Matrix dargestellte geometrische Transformation einem angegebenen Punktearray zu.

TransformVectors(Point[])

Weist dem angegebenen Punktearray ausschließlich die Skalierungs- und Drehungskomponenten dieser Matrix zu.

TransformVectors(PointF[])

Multipliziert jeden Vektor in einem Array mit der Matrix. Die zu verschiebenden Elemente dieser Matrix (dritte Zeile) werden ignoriert.

Translate(Single, Single)

Weist den angegebenen Verschiebungsvektor (offsetX und offsetY) dieser Matrix zu, wobei der Vektor vorangestellt wird.

Translate(Single, Single, MatrixOrder)

Weist den angegebenen Verschiebungsvektor dieser Matrix in der angegebenen Reihenfolge zu.

VectorTransformPoints(Point[])

Multipliziert jeden Vektor in einem Array mit der Matrix. Die zu verschiebenden Elemente dieser Matrix (dritte Zeile) werden ignoriert.

Gilt für

Weitere Informationen