Matrix Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.
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.
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(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 |
Multiply(Matrix, MatrixOrder) |
Moltiplica la classe Matrix per la matrice specificata nel parametro |
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 |
RotateAt(Single, PointF) |
Applica una rotazione in senso orario alla classe Matrix intorno al punto specificato nel parametro |
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 ( |
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 ( |
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
Commenti e suggerimenti
Invia e visualizza il feedback per