Matrix Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.
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.
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(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 |
| Multiply(Matrix) |
Vermenigvuldigt dit Matrix met de matrix die is opgegeven in de |
| 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 |
| 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 |
| Scale(Single, Single, MatrixOrder) |
Hiermee past u de opgegeven schaalvector ( |
| 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 ( |
| 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. |