Matrix Classe

Definição

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.

Matriz.

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.

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.

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 matrix parâmetro e pela ordem especificada no order parâmetro.

Multiply(Matrix)

Multiplica isto Matrix pela matriz especificada no matrix parâmetro, antependendo o especificado Matrix.

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 angle parâmetro, em torno da origem (coordenadas x e y) para este Matrix.

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 point parâmetro, e ao antecipar a rotação.

Scale(Single, Single, MatrixOrder)

Aplica o vetor de escala especificado (scaleX e scaleY) a isto Matrix usando a ordem especificada.

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 (offsetX e offsetY) a isto Matrix ao preencher o vetor de translação.

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.

Aplica-se a

Ver também