Matrix Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Encapsula uma matriz afim 3 por 3 que representa uma transformada geométrica. Esta classe não pode ser herdada.
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
- Herança
- Implementações
Observações
A Matrix classe encapsula uma matriz afim 3 por 3 que representa uma transformação geométrica.
No GDI+, você pode armazenar uma transformação afim em um Matrix objeto. Como a terceira coluna de uma matriz que representa uma transformação afim é sempre (0, 0, 1), você especifica apenas os seis números nas duas primeiras colunas ao construir um objeto Matrix. A instrução Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) constrói a matriz mostrada na figura a seguir.
Note
No .NET 6 e versões posteriores, o pacote System.Drawing.Common, que inclui esse tipo, só é suportado em sistemas operacionais Windows. O uso deste tipo em aplicações multiplataforma causa avisos em tempo de compilação e exceções em tempo de execução. Para obter mais informações, consulte System.Drawing.Common suportado apenas no Windows.
Transformações compostas
Uma transformação composta é uma sequência de transformações, uma seguida da outra. Considere as matrizes e transformações na lista a seguir:
| Matriz | Transformação |
|---|---|
| Matriz A | Rodar 90 graus |
| Matriz B | Aumentar a escala por um fator de 2 na direção x |
| Matriz C | Traduzir 3 unidades na direção y |
Se você começar com o ponto (2, 1) - representado pela matriz [2 1 1] - e multiplicar por A, então B, então C, o ponto (2, 1) sofrerá as três transformações na ordem listada.
[2 1 1]ABC = [-2 5 1]
Em vez de armazenar as três partes da transformação composta em três matrizes separadas, você pode multiplicar A, B e C juntas para obter uma única matriz 3×3 que armazena toda a transformação composta. Suponhamos ABC = D. Em seguida, um ponto multiplicado por D dá o mesmo resultado que um ponto multiplicado por A, depois B, depois C.
[2 1 1]D = [-2 5 1]
A ilustração a seguir mostra as matrizes A, B, C e D.
O fato de que a matriz de uma transformação composta pode ser formada pela multiplicação das matrizes de transformação individuais significa que qualquer sequência de transformações afins pode ser armazenada em um único objeto Matrix.
Atenção
A ordem de uma transformação composta é importante. Regra geral, girar, depois escalar e depois traduzir não é o mesmo que escalar, depois girar e depois traduzir. Da mesma forma, a ordem de multiplicação matricial é importante. Em geral, ABC não é o mesmo que BAC.
A classe Matrix fornece vários métodos para construir uma transformação composta: Multiply, Rotate, RotateAt, Scale, Sheare Translate. O exemplo a seguir cria a matriz de uma transformação composta que primeiro gira 30 graus, depois escala por um fator de 2 na direção y e, em seguida, traduz 5 unidades na direção 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)
Construtores
| Name | Descrição |
|---|---|
| Matrix() |
Inicializa uma nova instância da Matrix classe como matriz identidade. |
| Matrix(Matrix3x2) |
Constrói um Matrix utilizando o especificado |
| Matrix(Rectangle, Point[]) |
Inicializa uma nova instância da Matrix classe para a transformação geométrica definida pelo retângulo e array de pontos especificados. |
| Matrix(RectangleF, PointF[]) |
Inicializa uma nova instância da Matrix classe para a transformação geométrica definida pelo retângulo e array de pontos especificados. |
| Matrix(Single, Single, Single, Single, Single, Single) |
Inicializa uma nova instância da Matrix classe com os elementos especificados. |
Propriedades
| Name | Descrição |
|---|---|
| Elements |
Obtém um array de valores em ponto flutuante que representa os elementos deste Matrix. |
| IsIdentity |
Obtém um valor que indica se esta Matrix é a matriz identidade. |
| IsInvertible |
Obtém um valor que indica se isto Matrix é invertível. |
| MatrixElements |
Obtém ou define os elementos para a matriz. |
| OffsetX |
Obtém o valor de translação x (o valor dx, ou o elemento na terceira linha e primeira coluna) deste Matrix. |
| OffsetY |
Obtém o valor de translação y (o valor dy, ou o elemento na terceira linha e segunda coluna) deste Matrix. |
Métodos
| Name | Descrição |
|---|---|
| Clone() |
Cria uma cópia exata deste Matrix. |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Liberta todos os recursos utilizados por este Matrix. |
| Equals(Object) |
Testa se o objeto especificado é a Matrix e é idêntico a este Matrix. |
| Finalize() |
Permite que um objeto tente libertar recursos e realizar outras operações de limpeza antes de ser recuperado pela recolha de lixo. |
| GetHashCode() |
Devolve um código de hash. |
| GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obsoleto.
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| Invert() |
Inverte isto Matrix, se for invertível. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| Multiply(Matrix, MatrixOrder) |
Multiplica isto Matrix pela matriz especificada no |
| Multiply(Matrix) |
Multiplica isto Matrix pela matriz especificada no |
| Reset() |
Reinicia isto Matrix para ter os elementos da matriz identidade. |
| Rotate(Single, MatrixOrder) |
Aplica uma rotação no sentido dos ponteiros do relógio de uma quantidade especificada no |
| Rotate(Single) |
Anteponha-se a isto Matrix uma rotação no sentido dos ponteiros do relógio, em torno da origem e pelo ângulo especificado. |
| RotateAt(Single, PointF, MatrixOrder) |
Aplica uma rotação no sentido dos ponteiros do relógio em torno do ponto especificado a este Matrix na ordem especificada. |
| RotateAt(Single, PointF) |
Aplica uma rotação no sentido dos ponteiros do relógio em torno Matrix do ponto especificado no |
| Scale(Single, Single, MatrixOrder) |
Aplica o vetor de escala especificado ( |
| Scale(Single, Single) |
Aplica o vetor de escala especificado a isto Matrix ao preencher o vetor de escala. |
| Shear(Single, Single, MatrixOrder) |
Aplica o vetor de cisalhamento especificado a isto Matrix na ordem especificada. |
| Shear(Single, Single) |
Aplica o vetor de cisalhamento especificado a isto Matrix , antecedendo a transformação de cisalhamento. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TransformPoints(Point[]) |
Aplica a transformação geométrica representada por isto Matrix a um array especificado de pontos. |
| TransformPoints(PointF[]) |
Aplica a transformação geométrica representada por isto Matrix a um array especificado de pontos. |
| TransformPoints(ReadOnlySpan<Point>) |
Aplica a transformação geométrica representada por isto Matrix a um array especificado de pontos. |
| TransformPoints(ReadOnlySpan<PointF>) |
Aplica a transformação geométrica representada por isto Matrix a um array especificado de pontos. |
| TransformVectors(Point[]) |
Aplica apenas os componentes de escala e rotação deste Matrix ao array especificado de pontos. |
| TransformVectors(PointF[]) |
Multiplica cada vetor num array pela matriz. Os elementos de tradução desta matriz (terceira linha) são ignorados. |
| TransformVectors(ReadOnlySpan<Point>) |
Multiplica cada vetor num array pela matriz. Os elementos de tradução desta matriz (terceira linha) são ignorados. |
| TransformVectors(ReadOnlySpan<PointF>) |
Multiplica cada vetor num array pela matriz. Os elementos de tradução desta matriz (terceira linha) são ignorados. |
| Translate(Single, Single, MatrixOrder) |
Aplica o vetor de translação especificado a isto Matrix na ordem especificada. |
| Translate(Single, Single) |
Aplica o vetor de translação especificado ( |
| VectorTransformPoints(Point[]) |
Multiplica cada vetor num array pela matriz. Os elementos de tradução desta matriz (terceira linha) são ignorados. |
| VectorTransformPoints(ReadOnlySpan<Point>) |
Multiplica cada vetor num array pela matriz. Os elementos de tradução desta matriz (terceira linha) são ignorados. |