Partager via


LinearGradientBrush::MultiplyTransform, méthode (gdiplusbrush.h)

La méthode LinearGradientBrush::MultiplyTransform met à jour la matrice de transformation de ce pinceau avec le produit de lui-même et d’une autre matrice.

Syntaxe

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

Paramètres

[in] matrix

Type : matrice* const

Pointeur vers une matrice à multiplier par la matrice de transformation actuelle du pinceau.

[in] order

Type : MatrixOrder

Optionnel. Élément de l’énumération MatrixOrder qui spécifie l’ordre de la multiplication. MatrixOrderPrepend spécifie que la matrice passée se trouve à gauche et MatrixOrderAppend spécifie que la matrice passée se trouve à droite. La valeur par défaut est MatrixOrderPrepend.

Valeur retournée

Type : État

Si la méthode réussit, elle retourne Ok, qui est un élément de l’énumération Status .

Si la méthode échoue, elle retourne l’un des autres éléments de l’énumération Status .

Notes

Une seule matrice 3 ×3 peut stocker n’importe quelle séquence de transformations affines. Si vous avez plusieurs matrices 3 ×3, chacune représentant une transformation affine, le produit de ces matrices est une matrice 3 ×3 unique qui représente l’ensemble de la séquence de transformations. La transformation représentée par ce produit est appelée transformation composite. Par exemple, supposons que la matrice R représente une rotation et que la matrice T représente une traduction. Si la matrice M est le produit RT, la matrice M représente une transformation composite : d’abord pivoter, puis traduire.

L’ordre de multiplication matricielle est important. En général, le produit de matrice RT n’est pas identique au produit de matrice TR. Dans l’exemple donné dans le paragraphe précédent, la transformation composite représentée par RT (d’abord pivoter, puis traduire) n’est pas identique à la transformation composite représentée par TR (d’abord traduire, puis pivoter).

Exemples

L’exemple suivant crée un pinceau de dégradé linéaire et l’utilise pour remplir un rectangle. Ensuite, le code définit la matrice de transformation du pinceau, remplit un rectangle avec le pinceau transformé, modifie la matrice de transformation du pinceau et remplit à nouveau un rectangle avec le pinceau transformé.

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);
}

Spécifications

   
Client minimal pris en charge Windows XP, Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête gdiplusbrush.h (inclure Gdiplus.h)
Bibliothèque Gdiplus.lib
DLL Gdiplus.dll

Voir aussi

Pinceaux et formes remplies

Remplissage de formes avec un pinceau dégradé

LinearGradientBrush

LinearGradientBrush::RotateTransform

LinearGradientBrush::ScaleTransform

LinearGradientBrush::TranslateTransform

Matrice

Représentation matricielle des transformations

MatrixOrder

Rect

Transformations