Matrix Classe

Definizione

Incapsula una matrice affine 3 per 3 che rappresenta una trasformazione geometrica. La classe non può essere ereditata.

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
Ereditarietà
Implementazioni

Commenti

La Matrix classe incapsula una matrice affine 3 per 3 che rappresenta una trasformazione geometrica.

In GDI+, è possibile archiviare una trasformazione affine in un Matrix oggetto . Poiché la terza colonna di una matrice che rappresenta una trasformazione affine è sempre (0, 0, 1), si specificano solo i sei numeri nelle prime due colonne quando si crea un oggetto Matrix. L'istruzione Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) costruisce la matrice illustrata nella figura seguente.

Matrice.

Note

In .NET 6 e versioni successive il pacchetto System.Drawing.Common, che include questo tipo, è supportato solo nei sistemi operativi Windows. L'uso di questo tipo nelle app multipiattaforma causa avvisi in fase di compilazione ed eccezioni in fase di esecuzione. Per altre informazioni, vedere System.Drawing.Common supportato solo in Windows.

Trasformazioni composite

Una trasformazione composita è una sequenza di trasformazioni, una seguita dall'altra. Si considerino le matrici e le trasformazioni nell'elenco seguente:

Matrice Trasformazione
Matrice A Ruotare 90 gradi
Matrice B Scalare di un fattore 2 in direzione x
Matrice C Tradurre 3 unità nella direzione y

Se si inizia con il punto (2, 1) - rappresentato dalla matrice [2 1 1] - e moltiplicato per A, quindi B, C, il punto (2, 1) subirà le tre trasformazioni nell'ordine elencato.

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

Anziché archiviare le tre parti della trasformazione composita in tre matrici separate, è possibile moltiplicare A, B e C insieme per ottenere una singola matrice 3×3 che archivia l'intera trasformazione composita. Si supponga di ABC = D. Quindi un punto moltiplicato per D restituisce lo stesso risultato di un punto moltiplicato per A, quindi B, quindi C.

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

La figura seguente mostra le matrici A, B, C e D.

Matrici A, B, C e D

Il fatto che la matrice di una trasformazione composita possa essere formata moltiplicando le singole matrici di trasformazione, significa che qualsiasi sequenza di trasformazioni affine può essere archiviata in un singolo oggetto Matrix.

Caution

L'ordine di una trasformazione composita è importante. In generale, ruotare, quindi ridimensionare, quindi traslare non è uguale a ridimensionare, quindi ruotare, quindi traslare. Analogamente, l'ordine di moltiplicazione della matrice è importante. In generale, ABC non è uguale a BAC.

La classe Matrix fornisce diversi metodi per la creazione di una trasformazione composita: Multiply, Rotate, RotateAt, Scale, Sheare Translate. Nell'esempio seguente viene creata la matrice di una trasformazione composita che ruota di 30 gradi, poi si ridimensiona di un fattore di 2 nella direzione y, e successivamente trasla di 5 unità nella direzione x.

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)

Costruttori

Nome Descrizione
Matrix()

Inizializza una nuova istanza della Matrix classe come matrice di identità.

Matrix(Matrix3x2)

Costruisce un Matrix oggetto utilizzando l'oggetto specificato matrix.

Matrix(Rectangle, Point[])

Inizializza una nuova istanza della Matrix classe nella trasformazione geometrica definita dal rettangolo e dalla matrice di punti specificati.

Matrix(RectangleF, PointF[])

Inizializza una nuova istanza della Matrix classe nella trasformazione geometrica definita dal rettangolo e dalla matrice di punti specificati.

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

Inizializza una nuova istanza della Matrix classe con gli elementi specificati.

Proprietà

Nome Descrizione
Elements

Ottiene una matrice di valori a virgola mobile che rappresenta gli elementi di questo Matrixoggetto .

IsIdentity

Ottiene un valore che indica se si tratta Matrix della matrice di identità.

IsInvertible

Ottiene un valore che indica se è Matrix invertibile.

MatrixElements

Ottiene o imposta gli elementi per la matrice.

OffsetX

Ottiene il valore di conversione x (il valore dx o l'elemento nella terza riga e nella prima colonna) di questo Matrixoggetto .

OffsetY

Ottiene il valore di conversione y (valore dy o l'elemento nella terza riga e nella seconda colonna) di questo Matrixoggetto .

Metodi

Nome Descrizione
Clone()

Crea una copia esatta di questo Matrixoggetto .

CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da questo Matrixoggetto .

Equals(Object)

Verifica se l'oggetto specificato è un Matrix oggetto e è identico a questo Matrixoggetto .

Finalize()

Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che venga recuperata da Garbage Collection.

GetHashCode()

Restituisce un codice hash.

GetLifetimeService()
Obsoleti.

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
Invert()

Inverte questo Matrixoggetto , se è invertibile.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject .

(Ereditato da MarshalByRefObject)
Multiply(Matrix, MatrixOrder)

Moltiplica questo Matrix valore per la matrice specificata nel matrix parametro e nell'ordine specificato nel order parametro .

Multiply(Matrix)

Moltiplica questo Matrix valore per la matrice specificata nel matrix parametro , anteponendo l'oggetto specificato Matrix.

Reset()

Reimposta questa impostazione Matrix in modo che gli elementi della matrice di identità siano stati ripristinati.

Rotate(Single, MatrixOrder)

Applica una rotazione in senso orario di una quantità specificata nel angle parametro , intorno all'origine (zero x e y coordinate) per questo Matrixoggetto .

Rotate(Single)

Anteponi a questa Matrix rotazione in senso orario, intorno all'origine e all'angolo specificato.

RotateAt(Single, PointF, MatrixOrder)

Applica una rotazione in senso orario sul punto specificato a questo Matrix nell'ordine specificato.

RotateAt(Single, PointF)

Applica una rotazione in senso orario intorno al Matrix punto specificato nel point parametro e anteponendo la rotazione.

Scale(Single, Single, MatrixOrder)

Applica il vettore di scala specificato (scaleX e scaleY) a questo Matrix oggetto usando l'ordine specificato.

Scale(Single, Single)

Applica il vettore di scala specificato a questo Matrix oggetto anteponendo il vettore di scala.

Shear(Single, Single, MatrixOrder)

Applica il vettore di taglio specificato a questo Matrix oggetto nell'ordine specificato.

Shear(Single, Single)

Applica il vettore di taglio specificato a questo Matrix oggetto anteponendo la trasformazione shear.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TransformPoints(Point[])

Applica la trasformazione geometrica rappresentata da questo Matrix oggetto a una matrice di punti specificata.

TransformPoints(PointF[])

Applica la trasformazione geometrica rappresentata da questo Matrix oggetto a una matrice di punti specificata.

TransformPoints(ReadOnlySpan<Point>)

Applica la trasformazione geometrica rappresentata da questo Matrix oggetto a una matrice di punti specificata.

TransformPoints(ReadOnlySpan<PointF>)

Applica la trasformazione geometrica rappresentata da questo Matrix oggetto a una matrice di punti specificata.

TransformVectors(Point[])

Applica solo i componenti di scala e rotazione di questo Matrix oggetto alla matrice di punti specificata.

TransformVectors(PointF[])

Moltiplica ogni vettore in una matrice in base alla matrice. Gli elementi di conversione di questa matrice (terza riga) vengono ignorati.

TransformVectors(ReadOnlySpan<Point>)

Moltiplica ogni vettore in una matrice in base alla matrice. Gli elementi di conversione di questa matrice (terza riga) vengono ignorati.

TransformVectors(ReadOnlySpan<PointF>)

Moltiplica ogni vettore in una matrice in base alla matrice. Gli elementi di conversione di questa matrice (terza riga) vengono ignorati.

Translate(Single, Single, MatrixOrder)

Applica il vettore di conversione specificato a questo Matrix oggetto nell'ordine specificato.

Translate(Single, Single)

Applica il vettore di traduzione specificato (offsetX e offsetY) a questo Matrix oggetto anteponendo il vettore di conversione.

VectorTransformPoints(Point[])

Moltiplica ogni vettore in una matrice in base alla matrice. Gli elementi di conversione di questa matrice (terza riga) vengono ignorati.

VectorTransformPoints(ReadOnlySpan<Point>)

Moltiplica ogni vettore in una matrice in base alla matrice. Gli elementi di conversione di questa matrice (terza riga) vengono ignorati.

Si applica a

Vedi anche