Matrix Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.
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.
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(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 |
| Multiply(Matrix) |
Multiplicerar detta Matrix med matrisen som anges i parametern |
| 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 |
| 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 |
| Scale(Single, Single, MatrixOrder) |
Tillämpar den angivna skalningsvektorn ( |
| 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 ( |
| 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. |