Matrix Klass

Definition

Kapslar in en 3 x 3 affinmatris som representerar en geometrisk transformering. Det går inte att ärva den här klassen.

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
Arv
Implementeringar

Kommentarer

Klassen Matrix inkapslar en 3 gånger 3 affinmatris som representerar en geometrisk transformation.

I GDI+ kan du lagra en affintransformering i ett Matrix objekt. Eftersom den tredje kolumnen i en matris som representerar en affintransformering alltid är (0, 0, 1) anger du bara de sex talen i de två första kolumnerna när du skapar ett Matrix objekt. Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) Instruktionen konstruerar matrisen som visas i följande bild.

Matris.

Note

I .NET 6 och senare versioner stöds endast System.Drawing.Common-paketet, som innehåller den här typen, på Windows-operativsystem. Användning av den här typen i plattformsoberoende appar orsakar kompileringstidsvarningar och körningsfel. Mer information finns i System.Drawing.Common som endast stöds i Windows.

Sammansatta transformeringar

En sammansatt transformering är en sekvens med transformeringar, den ena följt av den andra. Överväg matriserna och omvandlingarna i följande lista:

Matris Omvandling
Matris A Rotera 90 grader
Matris B Skala med en faktor 2 i x-riktningen
Matris C Översätt 3 enheter i y-riktningen

Om du börjar med punkten (2, 1) - representerad av matrisen [2 1 1] - och multiplicerar med A, sedan B, sedan C, kommer punkten (2, 1) att genomgå de tre omvandlingarna i den ordning som anges.

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

I stället för att lagra de tre delarna av den sammansatta omvandlingen i tre separata matriser kan du multiplicera A, B och C för att få en enda 3×3-matris som lagrar hela den sammansatta omvandlingen. Anta ABC = D. Sedan ger en punkt multiplicerad med D samma resultat som en punkt multiplicerad med A, sedan B och sedan C.

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

Följande bild visar matriserna A, B, C och D.

Matriser A, B, C och D

Det faktum att matrisen för en sammansatt transformering kan bildas genom att multiplicera de enskilda transformeringsmatriserna innebär att alla sekvenser av affintransformeringar kan lagras i ett enda Matrix objekt.

Caution

Ordningen på en sammansatt transformering är viktig. I allmänhet är att rotera, sedan skala och sedan förflytta inte samma sak som att skala, sedan rotera och sedan förflytta. På samma sätt är ordningen på matrisens multiplikation viktig. I allmänhet är ABC inte samma som BAC.

Klassen Matrix innehåller flera metoder för att skapa en sammansatt transformering: Multiply, Rotate, RotateAt, Scale, Shearoch Translate. I följande exempel skapas matrisen för en sammansatt transformering som först roterar 30 grader, sedan skalar med en faktor 2 i y-riktningen och översätter sedan 5 enheter i x-riktningen:

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)

Konstruktorer

Name Description
Matrix()

Initierar en ny instans av Matrix klassen som identitetsmatris.

Matrix(Matrix3x2)

Konstruerar en Matrix som använder den angivna matrix.

Matrix(Rectangle, Point[])

Initierar en ny instans av Matrix klassen till den geometriska transformering som definieras av den angivna rektangeln och matrisen med punkter.

Matrix(RectangleF, PointF[])

Initierar en ny instans av Matrix klassen till den geometriska transformering som definieras av den angivna rektangeln och matrisen med punkter.

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

Initierar en ny instans av Matrix klassen med de angivna elementen.

Egenskaper

Name Description
Elements

Hämtar en matris med flyttalsvärden som representerar elementen i den här Matrix.

IsIdentity

Hämtar ett värde som anger om det här Matrix är identitetsmatrisen.

IsInvertible

Hämtar ett värde som anger om detta Matrix är inverterbart.

MatrixElements

Hämtar eller anger elementen för matrisen.

OffsetX

Hämtar x-översättningsvärdet (dx-värdet eller elementet i den tredje raden och den första kolumnen) i den här Matrix.

OffsetY

Hämtar y-översättningsvärdet (dy-värdet eller elementet i den tredje raden och den andra kolumnen) i den här Matrix.

Metoder

Name Description
Clone()

Skapar en exakt kopia av den här Matrix.

CreateObjRef(Type)

Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt.

(Ärvd från MarshalByRefObject)
Dispose()

Släpper alla resurser som används av den här Matrix.

Equals(Object)

Testar om det angivna objektet är ett Matrix och är identiskt med det här Matrix.

Finalize()

Tillåter att ett objekt försöker frigöra resurser och utföra andra rensningsåtgärder innan det frigörs av skräpinsamling.

GetHashCode()

Returnerar en hash-kod.

GetLifetimeService()
Föråldrad.

Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeLifetimeService()
Föråldrad.

Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
Invert()

Invertera detta Matrix, om det är inverterbart.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
MemberwiseClone(Boolean)

Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet.

(Ärvd från MarshalByRefObject)
Multiply(Matrix, MatrixOrder)

Multiplicerar detta Matrix med matrisen som anges i parametern matrix och i den ordning som anges i parametern order .

Multiply(Matrix)

Multiplicerar detta Matrix med matrisen som anges i parametern matrix genom att den angivna Matrix.

Reset()

Återställer detta Matrix till att ha elementen i identitetsmatrisen.

Rotate(Single, MatrixOrder)

Tillämpar en medurs rotation av en mängd som anges i parametern angle , runt ursprunget (noll x och y koordinater) för detta Matrix.

Rotate(Single)

Förbered till detta Matrix en medsols rotation, runt ursprunget och med den angivna vinkeln.

RotateAt(Single, PointF, MatrixOrder)

Tillämpar en rotation medsols om den angivna punkten Matrix i den angivna ordningen.

RotateAt(Single, PointF)

Tillämpar en medurs rotation på detta Matrix runt den punkt som anges i parametern point och genom att vänta på rotationen.

Scale(Single, Single, MatrixOrder)

Tillämpar den angivna skalningsvektorn (scaleX och scaleY) på detta Matrix med hjälp av den angivna ordningen.

Scale(Single, Single)

Tillämpar den angivna skalningsvektorn på detta Matrix genom att vänta på skalningsvektorn.

Shear(Single, Single, MatrixOrder)

Tillämpar den angivna sk shearvektorn på detta Matrix i den angivna ordningen.

Shear(Single, Single)

Tillämpar den angivna sk shearvektorn på detta Matrix genom att vänta på sheartransformeringen.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
TransformPoints(Point[])

Tillämpar den geometriska transformering som representeras av detta Matrix på en angiven matris med punkter.

TransformPoints(PointF[])

Tillämpar den geometriska transformering som representeras av detta Matrix på en angiven matris med punkter.

TransformPoints(ReadOnlySpan<Point>)

Tillämpar den geometriska transformering som representeras av detta Matrix på en angiven matris med punkter.

TransformPoints(ReadOnlySpan<PointF>)

Tillämpar den geometriska transformering som representeras av detta Matrix på en angiven matris med punkter.

TransformVectors(Point[])

Tillämpar endast skalnings- och rotationskomponenterna i detta Matrix på den angivna matrisen med punkter.

TransformVectors(PointF[])

Multiplicerar varje vektor i en matris med matrisen. Översättningselementen i den här matrisen (tredje raden) ignoreras.

TransformVectors(ReadOnlySpan<Point>)

Multiplicerar varje vektor i en matris med matrisen. Översättningselementen i den här matrisen (tredje raden) ignoreras.

TransformVectors(ReadOnlySpan<PointF>)

Multiplicerar varje vektor i en matris med matrisen. Översättningselementen i den här matrisen (tredje raden) ignoreras.

Translate(Single, Single, MatrixOrder)

Tillämpar den angivna översättningsvektorn på detta Matrix i den angivna ordningen.

Translate(Single, Single)

Tillämpar den angivna översättningsvektorn (offsetX och offsetY) på detta Matrix genom att vänta på översättningsvektorn.

VectorTransformPoints(Point[])

Multiplicerar varje vektor i en matris med matrisen. Översättningselementen i den här matrisen (tredje raden) ignoreras.

VectorTransformPoints(ReadOnlySpan<Point>)

Multiplicerar varje vektor i en matris med matrisen. Översättningselementen i den här matrisen (tredje raden) ignoreras.

Gäller för

Se även