Matrix Klas

Definitie

Inkapselt een affinematrix van 3 bij 3 die een geometrische transformatie vertegenwoordigt. Deze klasse kan niet worden overgenomen.

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
Overname
Implementeringen

Opmerkingen

De Matrix klasse bevat een affinematrix van 3 bij 3 die een geometrische transformatie vertegenwoordigt.

In GDI+ kunt u een affinustransformatie opslaan in een Matrix object. Omdat de derde kolom van een matrix die een affinustransformatie vertegenwoordigt altijd (0, 0, 1) is, geeft u alleen de zes getallen op in de eerste twee kolommen wanneer u een Matrix object maakt. Met de instructie Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) wordt de matrix samengesteld die wordt weergegeven in de volgende afbeelding.

Matrix.

Note

In .NET 6 en latere versies wordt het pakket System.Drawing.Common, dat dit type bevat, alleen ondersteund op Windows-besturingssystemen. Het gebruik van dit type in platformoverschrijdende apps veroorzaakt compileertijdwaarschuwingen en runtime-uitzonderingen. Zie System.Drawing.Common alleen ondersteund in Windows voor meer informatie.

Samengestelde transformaties

Een samengestelde transformatie is een reeks transformaties, één gevolgd door de andere. Houd rekening met de matrices en transformaties in de volgende lijst:

Matrix Transformatie
Matrix A 90 graden draaien
Matrix B Schaal met een factor van 2 in de x-richting
Matrix C 3 eenheden vertalen in de y-richting

Als u begint met het punt (2, 1) - vertegenwoordigd door de matrix [2 1 1] - en vermenigvuldigt met A, dan B, vervolgens C, het punt (2, 1) ondergaat de drie transformaties in de vermelde volgorde.

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

In plaats van de drie delen van de samengestelde transformatie op te slaan in drie afzonderlijke matrices, kunt u A, B en C samen vermenigvuldigen om één matrix van 3×3 op te halen waarin de hele samengestelde transformatie wordt opgeslagen. Stel dat ABC = D. Vervolgens geeft een punt vermenigvuldigd met D hetzelfde resultaat als een punt vermenigvuldigd met A, vervolgens B en vervolgens C.

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

In de volgende afbeelding ziet u de matrices A, B, C en D.

Matrices A, B, C en D

Het feit dat de matrix van een samengestelde transformatie kan worden gevormd door de afzonderlijke transformatiematrices te vermenigvuldigen, betekent dat elke reeks affinustransformaties in één Matrix object kan worden opgeslagen.

Caution

De volgorde van een samengestelde transformatie is belangrijk. In het algemeen is draaien, schalen en vertalen niet hetzelfde als schalen, vervolgens draaien en vervolgens vertalen. Op dezelfde manier is de volgorde van matrixvermeniging belangrijk. In het algemeen is ABC niet hetzelfde als BAC.

De klasse Matrix biedt verschillende methoden voor het bouwen van een samengestelde transformatie: Multiply, Rotate, RotateAt, Scale, Shearen Translate. In het volgende voorbeeld wordt de matrix gemaakt van een samengestelde transformatie die eerst 30 graden draait, vervolgens wordt geschaald met een factor van 2 in de y-richting en vervolgens 5 eenheden in de x-richting wordt omgezet:

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)

Constructors

Name Description
Matrix()

Initialiseert een nieuw exemplaar van de Matrix klasse als de identiteitsmatrix.

Matrix(Matrix3x2)

Hiermee wordt een Matrix gebruik gemaakt van de opgegeven matrix.

Matrix(Rectangle, Point[])

Initialiseert een nieuw exemplaar van de Matrix klasse naar de geometrische transformatie die is gedefinieerd door de opgegeven rechthoek en matrix met punten.

Matrix(RectangleF, PointF[])

Initialiseert een nieuw exemplaar van de Matrix klasse naar de geometrische transformatie die is gedefinieerd door de opgegeven rechthoek en matrix met punten.

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

Initialiseert een nieuw exemplaar van de Matrix klasse met de opgegeven elementen.

Eigenschappen

Name Description
Elements

Hiermee haalt u een matrix van drijvendekommawaarden op die de elementen van deze Matrixwaarde vertegenwoordigen.

IsIdentity

Hiermee wordt een waarde opgehaald die aangeeft of dit Matrix de identiteitsmatrix is.

IsInvertible

Hiermee wordt een waarde opgehaald die aangeeft of dit Matrix omkeerbaar is.

MatrixElements

Hiermee haalt u de elementen voor de matrix op of stelt u deze in.

OffsetX

Hiermee wordt de x-vertaalwaarde (de dx-waarde of het element in de derde rij en de eerste kolom) van deze Matrixwaarde opgehaald.

OffsetY

Hiermee wordt de waarde van de y-vertaling (de kleurstofwaarde of het element in de derde rij en de tweede kolom) van deze Matrixwaarde opgehaald.

Methoden

Name Description
Clone()

Hiermee maakt u een exacte kopie van deze Matrix.

CreateObjRef(Type)

Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object.

(Overgenomen van MarshalByRefObject)
Dispose()

Alle resources die door deze Matrixresources worden gebruikt, worden vrijgegeven.

Equals(Object)

Test of het opgegeven object een Matrix is en identiek is aan dit Matrix.

Finalize()

Hiermee kan een object resources vrijmaken en andere opschoonbewerkingen uitvoeren voordat het wordt vrijgemaakt door garbagecollection.

GetHashCode()

Retourneert een hash-code.

GetLifetimeService()
Verouderd.

Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd.

(Overgenomen van MarshalByRefObject)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
InitializeLifetimeService()
Verouderd.

Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren.

(Overgenomen van MarshalByRefObject)
Invert()

Zet dit Matrixom, als het omkeerbaar is.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
MemberwiseClone(Boolean)

Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object.

(Overgenomen van MarshalByRefObject)
Multiply(Matrix, MatrixOrder)

Vermenigvuldigt dit Matrix met de matrix die is opgegeven in de matrix parameter en in de volgorde die is opgegeven in de order parameter.

Multiply(Matrix)

Vermenigvuldigt dit Matrix met de matrix die is opgegeven in de matrix parameter, door de opgegeven Matrixwaarde vooraf te laten gaan.

Reset()

Hiermee stelt u de Matrix elementen van de identiteitsmatrix opnieuw in.

Rotate(Single, MatrixOrder)

Hiermee past u een rechtsomdraaiing toe van een bedrag dat is opgegeven in de angle parameter, rond de oorsprong (nul x- en y-coördinaten) voor dit Matrix.

Rotate(Single)

Prepend to this Matrix a clockwise rotation, around the origin and by the specified angle.

RotateAt(Single, PointF, MatrixOrder)

Hiermee past u een draaiing met de klok mee over het opgegeven punt in Matrix de opgegeven volgorde.

RotateAt(Single, PointF)

Hiermee past u een draaiing met de klok mee rond het punt dat is opgegeven in de Matrix parameter en door de draaiing point vooraf te laten gaan.

Scale(Single, Single, MatrixOrder)

Hiermee past u de opgegeven schaalvector (scaleX en scaleY) toe Matrix met behulp van de opgegeven volgorde.

Scale(Single, Single)

Hiermee past u de opgegeven schaalvector toe Matrix door de schaalvector vooraf te laten gaan.

Shear(Single, Single, MatrixOrder)

Hiermee past u de opgegeven shearvector toe Matrix in de opgegeven volgorde.

Shear(Single, Single)

Hiermee past u de opgegeven shearvector toe Matrix door de sheartransformatie vooraf te laten gaan.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
TransformPoints(Point[])

Hiermee wordt de geometrische transformatie toegepast die hiermee Matrix wordt vertegenwoordigd op een opgegeven matrix met punten.

TransformPoints(PointF[])

Hiermee wordt de geometrische transformatie toegepast die hiermee Matrix wordt vertegenwoordigd op een opgegeven matrix met punten.

TransformPoints(ReadOnlySpan<Point>)

Hiermee wordt de geometrische transformatie toegepast die hiermee Matrix wordt vertegenwoordigd op een opgegeven matrix met punten.

TransformPoints(ReadOnlySpan<PointF>)

Hiermee wordt de geometrische transformatie toegepast die hiermee Matrix wordt vertegenwoordigd op een opgegeven matrix met punten.

TransformVectors(Point[])

Alleen de schaal toepassen en onderdelen hiervan Matrix draaien op de opgegeven matrix met punten.

TransformVectors(PointF[])

Vermenigvuldigt elke vector in een matrix met de matrix. De vertaalelementen van deze matrix (derde rij) worden genegeerd.

TransformVectors(ReadOnlySpan<Point>)

Vermenigvuldigt elke vector in een matrix met de matrix. De vertaalelementen van deze matrix (derde rij) worden genegeerd.

TransformVectors(ReadOnlySpan<PointF>)

Vermenigvuldigt elke vector in een matrix met de matrix. De vertaalelementen van deze matrix (derde rij) worden genegeerd.

Translate(Single, Single, MatrixOrder)

Hiermee wordt de opgegeven vertaalvector Matrix in de opgegeven volgorde toegepast.

Translate(Single, Single)

Hiermee past u de opgegeven vertaalvector (offsetX en offsetY) toe Matrix door de vertaalvector vooraf te laten gaan.

VectorTransformPoints(Point[])

Vermenigvuldigt elke vector in een matrix met de matrix. De vertaalelementen van deze matrix (derde rij) worden genegeerd.

VectorTransformPoints(ReadOnlySpan<Point>)

Vermenigvuldigt elke vector in een matrix met de matrix. De vertaalelementen van deze matrix (derde rij) worden genegeerd.

Van toepassing op

Zie ook