Método LinearGradientBrush::MultiplyTransform (gdiplusbrush.h)
El método LinearGradientBrush::MultiplyTransform actualiza la matriz de transformación de este pincel con el producto de sí mismo y otra matriz.
Sintaxis
Status MultiplyTransform(
[in] const Matrix *matrix,
[in] MatrixOrder order
);
Parámetros
[in] matrix
Puntero a una matriz que se va a multiplicar por la matriz de transformación actual del pincel.
[in] order
Tipo: MatrixOrder
Opcional. Elemento de la enumeración MatrixOrder que especifica el orden de la multiplicación. MatrixOrderPrepend especifica que la matriz pasada está a la izquierda y MatrixOrderAppend especifica que la matriz pasada está a la derecha. El valor predeterminado es MatrixOrderPrepend.
Valor devuelto
Tipo: Estado
Si el método se ejecuta correctamente, devuelve Ok, que es un elemento de la enumeración Status .
Si se produce un error en el método, devuelve uno de los otros elementos de la enumeración Status .
Comentarios
Una sola matriz de 3 ×3 puede almacenar cualquier secuencia de transformaciones afín. Si tiene varias matrices de 3 ×3, cada una de las cuales representa una transformación afín, el producto de esas matrices es una única matriz de 3 ×3 que representa toda la secuencia de transformaciones. La transformación representada por ese producto se denomina transformación compuesta. Por ejemplo, supongamos que la matriz R representa una rotación y la matriz T representa una traducción. Si la matriz M es el producto RT, la matriz M representa una transformación compuesta: gire primero y luego traduzca.
El orden de multiplicación de matriz es importante. En general, el producto de matriz RT no es el mismo que el producto de matriz TR. En el ejemplo indicado en el párrafo anterior, la transformación compuesta representada por RT (primero girar y traducir) no es la misma que la transformación compuesta representada por TR (traducir primero y, a continuación, girar).
Ejemplos
En el ejemplo siguiente se crea un pincel de degradado lineal y se usa para rellenar un rectángulo. A continuación, el código establece la matriz de transformación del pincel, rellena un rectángulo con el pincel transformado, modifica la matriz de transformación del pincel y rellena de nuevo un rectángulo con el 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
Cliente mínimo compatible | Windows XP, Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | gdiplusbrush.h (include Gdiplus.h) |
Library | Gdiplus.lib |
Archivo DLL | Gdiplus.dll |
Consulte también
Rellenar formas con un pincel degradado
LinearGradientBrush::RotateTransform
LinearGradientBrush::ScaleTransform
LinearGradientBrush::TranslateTransform