Matrix Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Encapsula una matriz afín de 3 a 3 que representa una transformación geométrica. Esta clase no puede heredarse.
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
- Herencia
- Implementaciones
Comentarios
La Matrix clase encapsula una matriz afín de 3 a 3 que representa una transformación geométrica.
En GDI+, puede almacenar una transformación affine en un Matrix objeto . Dado que la tercera columna de una matriz que representa una transformación affine siempre es (0, 0, 1), solo se especifican los seis números de las dos primeras columnas al construir un Matrix objeto . La instrucción Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) construye la matriz que se muestra en la ilustración siguiente.
Note
En .NET 6 y versiones posteriores, el paquete System.Drawing.Common, que incluye este tipo, solo se admite en sistemas operativos Windows. El uso de este tipo en aplicaciones multiplataforma provoca advertencias en tiempo de compilación y excepciones en tiempo de ejecución. Para obtener más información, consulte System.Drawing.Common only supported on Windows (Solo se admite System.Drawing.Common en Windows).
Transformaciones compuestas
Una transformación compuesta es una secuencia de transformaciones, una seguida de la otra. Tenga en cuenta las matrices y las transformaciones de la lista siguiente:
| Matrix | Transformación |
|---|---|
| Matriz A | Girar 90 grados |
| Matriz B | Escalar por un factor de 2 en la dirección del eje x |
| Matriz C | Traducir 3 unidades en la dirección y |
Si comienza con el punto (2, 1) - representado por la matriz [2 1 1] y multiplicado por A, después B, C, el punto (2, 1) se somete a las tres transformaciones en el orden enumerado.
[2 1 1]ABC = [-2 5 1]
En lugar de almacenar las tres partes de la transformación compuesta en tres matrices independientes, puede multiplicar A, B y C juntas para obtener una sola matriz 3×3 que almacena toda la transformación compuesta. Supongamos que ABC = D. A continuación, un punto multiplicado por D da el mismo resultado que un punto multiplicado por A, después B y C.
[2 1 1]D = [-2 5 1]
En la ilustración siguiente se muestran las matrices A, B, C y D.
El hecho de que la matriz de una transformación compuesta se puede formar multiplicando las matrices de transformación individuales significa que cualquier secuencia de transformaciones afín se puede almacenar en un solo Matrix objeto.
Caution
El orden de una transformación compuesta es importante. En general, girar, luego escalar, luego trasladar no es lo mismo que escalar, luego girar, luego trasladar. Del mismo modo, el orden de multiplicación de matrices es importante. En general, ABC no es lo mismo que BAC.
La Matrix clase proporciona varios métodos para crear una transformación compuesta: Multiply, Rotate, RotateAtScale, , Sheary Translate. En el ejemplo siguiente se crea la matriz de una transformación compuesta que primero gira 30 grados, luego se escala por un factor de 2 en la dirección y, y a continuación traduce 5 unidades en la dirección 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)
Constructores
| Nombre | Description |
|---|---|
| Matrix() |
Inicializa una nueva instancia de la clase Matrix como matriz de identidades. |
| Matrix(Matrix3x2) |
Construye un Matrix utilizando el |
| Matrix(Rectangle, Point[]) |
Inicializa una nueva instancia de la clase Matrix a la transformación geométrica definida por el rectángulo y la matriz de puntos especificados. |
| Matrix(RectangleF, PointF[]) |
Inicializa una nueva instancia de la clase Matrix a la transformación geométrica definida por el rectángulo y la matriz de puntos especificados. |
| Matrix(Single, Single, Single, Single, Single, Single) |
Inicializa una nueva instancia de la clase Matrix con los elementos especificados. |
Propiedades
| Nombre | Description |
|---|---|
| Elements |
Obtiene una matriz de valores de punto flotante que representa los elementos de este Matrix. |
| IsIdentity |
Obtiene un valor que indica si este Matrix es la matriz de identidades. |
| IsInvertible |
Obtiene un valor que indica si este Matrix es invertible. |
| MatrixElements |
Obtiene o establece los elementos de la matriz. |
| OffsetX |
Obtiene el valor de traducción x (el valor dx o el elemento de la tercera fila y la primera columna) de este Matrix. |
| OffsetY |
Obtiene el valor de traducción y (el valor dy o el elemento de la tercera fila y segunda columna) de este Matrix. |
Métodos
| Nombre | Description |
|---|---|
| Clone() |
Crea una copia exacta de este Matrixobjeto . |
| CreateObjRef(Type) |
Crea un objeto que contiene toda la información pertinente necesaria para generar un proxy usado para comunicarse con un objeto remoto. (Heredado de MarshalByRefObject) |
| Dispose() |
Libera todos los recursos usados por este Matrix. |
| Equals(Object) |
Comprueba si el objeto especificado es un Matrix y es idéntico a este Matrix. |
| Finalize() |
Permite a un objeto intentar liberar recursos y realizar otras operaciones de limpieza antes de que la recolección de elementos no utilizados la recupere. |
| GetHashCode() |
Devuelve un código hash. |
| GetLifetimeService() |
Obsoletos.
Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Heredado de MarshalByRefObject) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| InitializeLifetimeService() |
Obsoletos.
Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Heredado de MarshalByRefObject) |
| Invert() |
Invierte este Matrix, si es invertible. |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficial del objeto actual MarshalByRefObject . (Heredado de MarshalByRefObject) |
| Multiply(Matrix, MatrixOrder) |
Multiplica este Matrix por la matriz especificada en el parámetro |
| Multiply(Matrix) |
Multiplica este Matrix por la matriz especificada en el parámetro |
| Reset() |
Restablece este Matrix para tener los elementos de la matriz de identidades. |
| Rotate(Single, MatrixOrder) |
Aplica un giro en el sentido de las agujas del reloj de una cantidad especificada en el parámetro |
| Rotate(Single) |
Anteponer a este Matrix una rotación en sentido de las agujas del reloj, alrededor del origen y por el ángulo especificado. |
| RotateAt(Single, PointF, MatrixOrder) |
Aplica un giro en el sentido de las agujas del reloj sobre el punto especificado a este Matrix en el orden especificado. |
| RotateAt(Single, PointF) |
Aplica un giro en el sentido de las agujas del reloj a este Matrix alrededor del punto especificado en el parámetro |
| Scale(Single, Single, MatrixOrder) |
Aplica el vector de escala especificado ( |
| Scale(Single, Single) |
Aplica el vector de escala especificado a este Matrix mediante la prepending del vector de escala. |
| Shear(Single, Single, MatrixOrder) |
Aplica el vector de corte especificado a este Matrix en el orden especificado. |
| Shear(Single, Single) |
Aplica el vector de corte especificado a este Matrix prepending la transformación de corte. |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
| TransformPoints(Point[]) |
Aplica la transformación geométrica representada por este Matrix a una matriz especificada de puntos. |
| TransformPoints(PointF[]) |
Aplica la transformación geométrica representada por este Matrix a una matriz especificada de puntos. |
| TransformPoints(ReadOnlySpan<Point>) |
Aplica la transformación geométrica representada por este Matrix a una matriz especificada de puntos. |
| TransformPoints(ReadOnlySpan<PointF>) |
Aplica la transformación geométrica representada por este Matrix a una matriz especificada de puntos. |
| TransformVectors(Point[]) |
Aplica solo los componentes de escala y rotación de este Matrix a la matriz de puntos especificada. |
| TransformVectors(PointF[]) |
Multiplica cada vector de una matriz por la matriz. Los elementos de traducción de esta matriz (tercera fila) se omiten. |
| TransformVectors(ReadOnlySpan<Point>) |
Multiplica cada vector de una matriz por la matriz. Los elementos de traducción de esta matriz (tercera fila) se omiten. |
| TransformVectors(ReadOnlySpan<PointF>) |
Multiplica cada vector de una matriz por la matriz. Los elementos de traducción de esta matriz (tercera fila) se omiten. |
| Translate(Single, Single, MatrixOrder) |
Aplica el vector de traducción especificado a este Matrix en el orden especificado. |
| Translate(Single, Single) |
Aplica el vector de traducción especificado ( |
| VectorTransformPoints(Point[]) |
Multiplica cada vector de una matriz por la matriz. Los elementos de traducción de esta matriz (tercera fila) se omiten. |
| VectorTransformPoints(ReadOnlySpan<Point>) |
Multiplica cada vector de una matriz por la matriz. Los elementos de traducción de esta matriz (tercera fila) se omiten. |