Matrix Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Encapsula uma matriz de affine 3 por 3 que representa uma transformação geométrica. Essa 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
Comentários
A Matrix classe encapsula uma matriz de affine 3 por 3 que representa uma transformação geométrica.
No GDI+, você pode armazenar uma transformação de affine em um Matrix objeto. Como a terceira coluna de uma matriz que representa uma transformação affine é 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ó tem suporte em sistemas operacionais Windows. O uso desse tipo em aplicativos multiplataforma causa avisos de tempo de compilação e exceções em tempo de execução. Para obter mais informações, consulte System.Drawing.Common com suporte apenas no Windows.
Transformações compostas
Uma transformação composta é uma sequência de transformações, uma seguida pela outra. Considere as matrizes e transformações na seguinte lista:
| Matriz | Transformação |
|---|---|
| Matriz A | Girar 90 graus |
| Matriz B | Dimensionar por um fator de 2 na direção x |
| Matriz C | Mover 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, C, o ponto (2, 1) passará pelas 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 juntos para obter uma única matriz 3×3 que armazena toda a transformação composta. Suponha que ABC = D. Em seguida, um ponto multiplicado por D fornece o mesmo resultado que um ponto multiplicado por A e, em seguida, B e 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 multiplicando as matrizes de transformação individuais significa que qualquer sequência de transformações de afim pode ser armazenada em um único objeto Matrix.
Caution
A ordem de uma transformação composta é importante. Em geral, girar, dimensionar e converter não é o mesmo que dimensionar, girar e converter. Da mesma forma, a ordem da multiplicação de matriz é importante. Em geral, ABC não é o mesmo que BAC.
A classe Matrix fornece vários métodos para a criação de 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 finalmente translada 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
| Nome | Description |
|---|---|
| Matrix() |
Inicializa uma nova instância da Matrix classe como a matriz de identidade. |
| Matrix(Matrix3x2) |
Constrói uma Matrix utilização do |
| Matrix(Rectangle, Point[]) |
Inicializa uma nova instância da Matrix classe para a transformação geométrica definida pelo retângulo e matriz 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 matriz de pontos especificados. |
| Matrix(Single, Single, Single, Single, Single, Single) |
Inicializa uma nova instância da Matrix classe com os elementos especificados. |
Propriedades
| Nome | Description |
|---|---|
| Elements |
Obtém uma matriz de valores de ponto flutuante que representa os elementos deste Matrix. |
| IsIdentity |
Obtém um valor que indica se essa Matrix é a matriz de identidade. |
| IsInvertible |
Obtém um valor que indica se isso Matrix é inverterível. |
| MatrixElements |
Obtém ou define os elementos da matriz. |
| OffsetX |
Obtém o valor de conversão x (o valor dx ou o elemento na terceira linha e primeira coluna) deste Matrix. |
| OffsetY |
Obtém o valor de tradução y (o valor dy ou o elemento na terceira linha e segunda coluna) deste Matrix. |
Métodos
| Nome | Description |
|---|---|
| Clone() |
Cria uma cópia exata disso Matrix. |
| CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Libera todos os recursos usados por isso Matrix. |
| Equals(Object) |
Testa se o objeto especificado é um Matrix e é idêntico a este Matrix. |
| Finalize() |
Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes de ser recuperado pela coleta de lixo. |
| GetHashCode() |
Retorna um código hash. |
| GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida dessa instância. (Herdado de MarshalByRefObject) |
| Invert() |
Inverte isso Matrix, se for inverter. |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| Multiply(Matrix, MatrixOrder) |
Multiplica isso Matrix pela matriz especificada no |
| Multiply(Matrix) |
Multiplica isso Matrix pela matriz especificada no |
| Reset() |
Redefine isso Matrix para ter os elementos da matriz de identidade. |
| Rotate(Single, MatrixOrder) |
Aplica uma rotação no sentido horário de uma quantidade especificada no parâmetro, em |
| Rotate(Single) |
Acrescente a isso Matrix uma rotação no sentido horário, ao redor da origem e pelo ângulo especificado. |
| RotateAt(Single, PointF, MatrixOrder) |
Aplica uma rotação no sentido horário sobre o ponto especificado a isso Matrix na ordem especificada. |
| RotateAt(Single, PointF) |
Aplica uma rotação no sentido horário a isso Matrix em torno do ponto especificado no |
| Scale(Single, Single, MatrixOrder) |
Aplica o vetor de escala especificado ( |
| Scale(Single, Single) |
Aplica o vetor de escala especificado a isso Matrix , acrescentando o vetor de escala. |
| Shear(Single, Single, MatrixOrder) |
Aplica o vetor de tesoura especificado a isso Matrix na ordem especificada. |
| Shear(Single, Single) |
Aplica o vetor de tesoura especificado a isso Matrix , acrescentando a transformação de tesoura. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
| TransformPoints(Point[]) |
Aplica a transformação geométrica representada por isso Matrix a uma matriz de pontos especificada. |
| TransformPoints(PointF[]) |
Aplica a transformação geométrica representada por isso Matrix a uma matriz de pontos especificada. |
| TransformPoints(ReadOnlySpan<Point>) |
Aplica a transformação geométrica representada por isso Matrix a uma matriz de pontos especificada. |
| TransformPoints(ReadOnlySpan<PointF>) |
Aplica a transformação geométrica representada por isso Matrix a uma matriz de pontos especificada. |
| TransformVectors(Point[]) |
Aplica apenas os componentes de escala e rotação disso Matrix à matriz de pontos especificada. |
| TransformVectors(PointF[]) |
Multiplica cada vetor em uma matriz pela matriz. Os elementos de tradução dessa matriz (terceira linha) são ignorados. |
| TransformVectors(ReadOnlySpan<Point>) |
Multiplica cada vetor em uma matriz pela matriz. Os elementos de tradução dessa matriz (terceira linha) são ignorados. |
| TransformVectors(ReadOnlySpan<PointF>) |
Multiplica cada vetor em uma matriz pela matriz. Os elementos de tradução dessa matriz (terceira linha) são ignorados. |
| Translate(Single, Single, MatrixOrder) |
Aplica o vetor de tradução especificado a isso Matrix na ordem especificada. |
| Translate(Single, Single) |
Aplica o vetor de tradução especificado ( |
| VectorTransformPoints(Point[]) |
Multiplica cada vetor em uma matriz pela matriz. Os elementos de tradução dessa matriz (terceira linha) são ignorados. |
| VectorTransformPoints(ReadOnlySpan<Point>) |
Multiplica cada vetor em uma matriz pela matriz. Os elementos de tradução dessa matriz (terceira linha) são ignorados. |