Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
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.
Opmerking
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.
Waarschuwing
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)