Método LinearGradientBrush::MultiplyTransform (gdiplusbrush.h)
O método LinearGradientBrush::MultiplyTransform atualiza a matriz de transformação desse 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: const Matrix*
Ponteiro para uma matriz a ser multiplicada pela matriz de transformação atual do pincel.
[in] order
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.
Valor de retorno
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.
Observações
Uma única matriz de 3 ×3 pode armazenar qualquer sequência de transformações de afim. Se você tiver 3 matrizes ×3, cada uma delas representa uma transformação de afim, o produto dessas matrizes é 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, converta.
A ordem da multiplicação de matriz é importante. Em geral, o RT do produto de matriz 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 é a mesma que a transformação composta representada por TR (primeiro traduzir e depois girar).
Exemplos
O exemplo a seguir cria um pincel de gradiente linear e o usa para preencher um retângulo. Em seguida, o código define a matriz de transformação do pincel, preenche um retângulo com o pincel transformado, modifica a matriz de transformação do pincel e preenche novamente um retângulo com o pincel transformado.
VOID Example_MultTrans(HDC hdc)
{
Graphics myGraphics(hdc);
Matrix S(2, 0, 0, 1, 0, 0); // horizontal doubling
Matrix T(1, 0, 0, 1, 50, 0); // horizontal translation of 50 units
LinearGradientBrush linGrBrush(
Rect(0, 0, 200, 100),
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
LinearGradientModeHorizontal);
// Fill a large area with the gradient brush (no transformation).
myGraphics.FillRectangle(&linGrBrush, 0, 0, 800, 100);
// Apply the scaling transformation.
linGrBrush.SetTransform(&S);
// Fill a large area with the scaled gradient brush.
myGraphics.FillRectangle(&linGrBrush, 0, 150, 800, 100);
// Form a composite transformation: first scale, then translate.
linGrBrush.MultiplyTransform(&T, MatrixOrderAppend);
// Fill a large area with the scaled and translated gradient brush.
myGraphics.FillRectangle(&linGrBrush, 0, 300, 800, 100);
}
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP, Windows 2000 Professional [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows 2000 Server [somente aplicativos da área de trabalho] |
da Plataforma de Destino | Windows |
cabeçalho | gdiplusbrush.h (inclua Gdiplus.h) |
biblioteca | Gdiplus.lib |
de DLL | Gdiplus.dll |
Consulte também
pincéis e formas preenchidas
preenchendo formas com um pincel de gradiente
LinearGradientBrush::RotateTransform
LinearGradientBrush::ScaleTransform
LinearGradientBrush::TranslateTransform
representação de transformações de matriz
de Rect