Share via


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

El método PathGradientBrush::MultiplyTransform actualiza la matriz de transformación del pincel con el producto de sí mismo y otra matriz.

Sintaxis

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

Parámetros

[in] matrix

Tipo: Matriz*

Puntero a la matriz que se 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 realiza 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 sola 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: primero gira y luego se traduce.

El orden de multiplicación de matriz es importante. En general, el producto de matriz RT no es el mismo que el tr del producto de matriz. 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 (primero traducir y girar).

Ejemplos

En el ejemplo siguiente se crea un objeto PathGradientBrush basado en una ruta triangular. El código llama al método PathGradientBrush::ScaleTransform del objeto PathGradientBrush para rellenar la matriz de transformación del pincel con los elementos que representan un escalado horizontal por un factor de 3. A continuación, el código llama al método PathGradientBrush::MultiplyTransform de ese mismo objeto PathGradientBrush para multiplicar la matriz de transformación existente del pincel por una matriz que representa una traducción (10 derecha, 30 abajo). El argumento MatrixOrderAppend indica que la multiplicación se realiza con la matriz de traducción a la derecha.

Después de la multiplicación, la matriz de transformación del pincel representa una transformación compuesta: la primera escala y, después, la traducción. Esa transformación compuesta se aplica a la ruta de límite del pincel durante la llamada a FillRectangle, por lo que es el área dentro de la ruta de acceso transformada que se pinta.

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 Value
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 gdipluspath.h (incluya Gdiplus.h)
Library Gdiplus.lib
Archivo DLL Gdiplus.dll

Consulte también

Pinceles y formas rellenas

Creación de un degradado de trazado

Rellenar una forma con un degradado de color

Matriz

Representación matricial de transformaciones

MatrixOrder

PathGradientBrush

PathGradientBrush::GetTransform

PathGradientBrush::ResetTransform

PathGradientBrush::RotateTransform

PathGradientBrush::ScaleTransform

PathGradientBrush::SetTransform

PathGradientBrush::TranslateTransform

Transformaciones