Partager via


PathGradientBrush ::MultiplyTransform, méthode (gdipluspath.h)

La méthode PathGradientBrush ::MultiplyTransform met à jour la matrice de transformation du 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*

Pointeur vers la matrice qui sera multipliée par la matrice de transformation actuelle du pinceau.

[in] order

Type : MatrixOrder

facultatif. É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 .

Remarques

Une seule matrice 3 ×3 peut stocker n’importe quelle séquence de transformations affines. Si vous avez plusieurs matrices de 3 ×3, chacune représentant une transformation affine, le produit de ces matrices est une matrice unique 3 ×3 qui représente la séquence entière 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 la rt du produit, la matrice M représente une transformation composite : d’abord pivoter, puis traduire.

L’ordre de multiplication des matrices est important. En général, le produit de matrice RT n’est pas le même que le 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 la même que la transformation composite représentée par TR (d’abord traduire, puis pivoter).

Exemples

L’exemple suivant crée un objet PathGradientBrush basé sur un chemin triangulaire. Le code appelle la méthode PathGradientBrush ::ScaleTransform de l’objet PathGradientBrush pour remplir la matrice de transformation du pinceau avec les éléments qui représentent une mise à l’échelle horizontale d’un facteur 3. Ensuite, le code appelle la méthode PathGradientBrush ::MultiplyTransform de ce même objet PathGradientBrush pour multiplier la matrice de transformation existante du pinceau par une matrice qui représente une traduction (10 à droite, 30 vers le bas). L’argument MatrixOrderAppend indique que la multiplication est effectuée avec la matrice de traduction à droite.

Après la multiplication, la matrice de transformation du pinceau représente une transformation composite : d’abord mettre à l’échelle, puis traduire. Cette transformation composite est appliquée au chemin de limite du pinceau lors de l’appel à FillRectangle, de sorte que c’est la zone à l’intérieur du chemin transformé qui est peinte.

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

Configuration requise

Condition requise Valeur
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 gdipluspath.h (include Gdiplus.h)
Bibliothèque Gdiplus.lib
DLL Gdiplus.dll

Voir aussi

Pinceaux et formes remplies

Création d’un dégradé de chemin

Remplissage d’une forme avec un dégradé de couleur

Matrice

Représentation matricielle des transformations

MatrixOrder

PathGradientBrush

PathGradientBrush ::GetTransform

PathGradientBrush ::ResetTransform

PathGradientBrush ::RotateTransform

PathGradientBrush ::ScaleTransform

PathGradientBrush ::SetTransform

PathGradientBrush ::TranslateTransform

Transformations