Compartilhar via


Método PathGradientBrush::MultiplyTransform (gdipluspath.h)

O método PathGradientBrush::MultiplyTransform atualiza a matriz de transformação do pincel com o produto de si mesmo e outra matriz.

Sintaxe

Status MultiplyTransform(
  [in] const Matrix *matrix,
  [in] MatrixOrder  order
);

Parâmetros

[in] matrix

Tipo: Matriz*

Ponteiro para a matriz que será multiplicada pela matriz de transformação atual do pincel.

[in] order

Tipo: MatrixOrder

Opcional. Elemento da enumeração MatrixOrder que especifica a ordem da multiplicação. MatrixOrderPrepend especifica que a matriz passada está à esquerda e MatrixOrderAppend especifica que a matriz passada está à direita. O valor padrão é MatrixOrderPrepend.

Retornar valor

Tipo: Status

Se o método for bem-sucedido, ele retornará Ok, que é um elemento da enumeração Status .

Se o método falhar, ele retornará um dos outros elementos da enumeração Status .

Comentários

Uma única matriz de 3 ×3 pode armazenar qualquer sequência de transformações afim. Se você tiver várias matrizes 3 ×3, cada uma representando uma transformação afim, o produto dessas matrizes será uma matriz única de 3 ×3 que representa toda a sequência de transformações. A transformação representada por esse produto é chamada de transformação composta. Por exemplo, suponha que a matriz R represente uma rotação e a matriz T represente uma tradução. Se a matriz M for o RT do produto, a matriz M representará uma transformação composta: primeiro gire e, em seguida, traduza.

A ordem de multiplicação de matriz é importante. Em geral, o produto de matriz RT não é o mesmo que o TR do produto de matriz. No exemplo dado no parágrafo anterior, a transformação composta representada por RT (primeiro girar, depois traduzir) não é igual à transformação composta representada por TR (primeiro traduzir, depois girar).

Exemplos

O exemplo a seguir cria um objeto PathGradientBrush com base em um caminho triangular. O código chama o método PathGradientBrush::ScaleTransform do objeto PathGradientBrush para preencher a matriz de transformação do pincel com os elementos que representam um dimensionamento horizontal por um fator de 3. Em seguida, o código chama o método PathGradientBrush::MultiplyTransform do mesmo objeto PathGradientBrush para multiplicar a matriz de transformação existente do pincel por uma matriz que representa uma tradução (10 à direita, 30 para baixo). O argumento MatrixOrderAppend indica que a multiplicação é executada com a matriz de tradução à direita.

Após a multiplicação, a matriz de transformação do pincel representa uma transformação composta: primeiro dimensione e, em seguida, traduza. Essa transformação composta é aplicada ao caminho de limite do pincel durante a chamada para FillRectangle, portanto, é a área dentro do caminho transformado que é pintada.

VOID Example_MultiplyTransform(HDC hdc)
{
   Graphics graphics(hdc);
   Point pts[] = {Point(0, 0), Point(50, 0), Point(50, 50)};

   // Translate 10 right, 30 down.
   Matrix matrix(1.0f, 0.0f, 0.0f, 1.0f, 10.0f, 30.0f);

   PathGradientBrush pthGrBrush(pts, 3);
   pthGrBrush.ScaleTransform(3.0f, 1.0f);
   pthGrBrush.MultiplyTransform(&matrix, MatrixOrderAppend);

   graphics.FillRectangle(&pthGrBrush, 0, 0, 200, 200);  
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP, Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho gdipluspath.h (inclua Gdiplus.h)
Biblioteca Gdiplus.lib
DLL Gdiplus.dll

Confira também

Pincéis e formas preenchidas

Criando um Gradiente de Caminho

Preenchendo uma forma com um gradiente de cor

Matriz

Representação matricial de transformações

Matrixorder

Pathgradientbrush

PathGradientBrush::GetTransform

PathGradientBrush::ResetTransform

PathGradientBrush::RotateTransform

PathGradientBrush::ScaleTransform

PathGradientBrush::SetTransform

PathGradientBrush::TranslateTransform

Transformações