Matrix Classe

Definizione

Incapsula una matrice affine 3x3 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

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 costruisce un Matrix oggetto. L'istruzione Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) costruisce la matrice illustrata nella figura seguente.

Trasformazioni

Nota

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 di runtime. 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 A Ruotare 90 gradi
Matrice B Scalare di un fattore pari a 2 nella 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, poi 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 CHE 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.

Trasformazioni

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 Matrix oggetto.

Attenzione

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

La Matrix classe 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 prima di 30 gradi, quindi scala per un fattore pari a 2 nella direzione y e quindi converte 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

Matrix()

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

Matrix(Matrix3x2)

Costruisce un Matrix oggetto utilizzando l'oggetto specificato matrix.

Matrix(Rectangle, Point[])

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

Matrix(RectangleF, PointF[])

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

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

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

Proprietà

Elements

Ottiene una matrice di valori a virgola mobile che rappresenta gli elementi della classe Matrix.

IsIdentity

Ottiene un valore che indica se la classe Matrix è la matrice di identità.

IsInvertible

Ottiene un valore che indica se questa classe Matrix è invertibile.

MatrixElements

Ottiene o imposta gli elementi per la matrice.

OffsetX

Ottiene il valore di traslazione x (il valore dx o l'elemento nella terza riga e nella prima colonna) della classe Matrix.

OffsetY

Ottiene il valore di traslazione y (il valore dy oppure l'elemento nella terza riga e nella seconda colonna) di Matrix.

Metodi

Clone()

Crea una copia esatta di questo Matrix.

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da questa classe Matrix.

Equals(Object)

Esegue il test che verifica se l'oggetto specificato è una classe Matrix e se è identico a questa classe Matrix.

Finalize()

Consente a un oggetto di effettuare un tentativo di liberare risorse ed eseguire altre operazioni di pulizia prima che venga recuperato da Garbage Collection.

GetHashCode()

Restituisce un codice hash.

GetLifetimeService()
Obsoleta.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleta.

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

(Ereditato da MarshalByRefObject)
Invert()

Inverte la classe Matrix, se è invertibile.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
Multiply(Matrix)

Moltiplica la classe Matrix per la matrice specificata nel parametro matrix, anteponendo la classe Matrix specificata.

Multiply(Matrix, MatrixOrder)

Moltiplica la classe Matrix per la matrice specificata nel parametro matrix secondo l'ordine specificato nel parametro order.

Reset()

Reimposta la classe Matrix in modo che disponga degli stessi elementi della matrice di identità.

Rotate(Single)

Antepone alla classe Matrix una rotazione in senso orario, intorno all'origine e in base all'angolo specificato.

Rotate(Single, MatrixOrder)

Applica una rotazione in senso orario del valore specificato nel parametro angle intorno all'origine (coordinate x e y pari a zero) per la classe Matrix.

RotateAt(Single, PointF)

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

RotateAt(Single, PointF, MatrixOrder)

Applica una rotazione in senso orario intorno al punto specificato alla classe Matrix nell'ordine indicato.

Scale(Single, Single)

Applica il vettore di modifica delle proporzioni specificato alla classe Matrix anteponendolo.

Scale(Single, Single, MatrixOrder)

Applica il vettore di modifica delle proporzioni specificato (scaleX e scaleY) alla classe Matrix usando l'ordine specificato.

Shear(Single, Single)

Applica il vettore di taglio specificato a questa classe Matrix anteponendo la trasformazione di taglio.

Shear(Single, Single, MatrixOrder)

Applica il vettore di taglio specificato alla classe Matrix nell'ordine indicato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TransformPoints(Point[])

Applica la trasformazione geometrica rappresentata dalla classe Matrix a una matrice di punti specificata.

TransformPoints(PointF[])

Applica la trasformazione geometrica rappresentata dalla classe Matrix a una matrice di punti specificata.

TransformVectors(Point[])

Applica alla matrice di punti specificata solo i componenti di rotazione e di modifica delle proporzioni della classe Matrix.

TransformVectors(PointF[])

Moltiplica ciascun vettore di una matrice per la matrice. Gli elementi di traslazione di questa matrice (terza riga) vengono ignorati.

Translate(Single, Single)

Applica il vettore di traslazione specificato (offsetX e offsetY) alla classe Matrix anteponendolo.

Translate(Single, Single, MatrixOrder)

Applica il vettore di traslazione specificato alla classe Matrix nell'ordine indicato.

VectorTransformPoints(Point[])

Moltiplica ciascun vettore di una matrice per la matrice. Gli elementi di traslazione di questa matrice (terza riga) vengono ignorati.

Si applica a

Vedi anche