Freigeben über


PathGradientBrush::MultiplyTransform-Methode (gdipluspath.h)

Die PathGradientBrush::MultiplyTransform-Methode aktualisiert die Transformationsmatrix des Pinsels mit dem Produkt von sich selbst und einer anderen Matrix.

Syntax

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

Parameter

[in] matrix

Typ: Matrix*

Zeiger auf die Matrix, die mit der aktuellen Transformationsmatrix des Pinsels multipliziert wird.

[in] order

Typ: MatrixOrder

Optional. Element der MatrixOrder-Enumeration , das die Reihenfolge der Multiplikation angibt. MatrixOrderPrepend gibt an, dass sich die übergebene Matrix auf der linken Seite befindet, und MatrixOrderAppend gibt an, dass sich die übergebene Matrix auf der rechten Seite befindet. Der Standardwert ist MatrixOrderPrepend.

Rückgabewert

Typ: Status

Wenn die Methode erfolgreich ist, gibt sie OK zurück, ein Element der Status-Enumeration .

Wenn die Methode fehlschlägt, wird eines der anderen Elemente der Status-Enumeration zurückgegeben.

Hinweise

Eine einzelne 3 ×3-Matrix kann jede Sequenz von affinen Transformationen speichern. Wenn Sie über mehrere 3 ×3 Matrizen verfügen, von denen jede eine affine Transformation darstellt, ist das Produkt dieser Matrizen eine einzelne 3 ×3 Matrix, die die gesamte Sequenz von Transformationen darstellt. Die transformation, die durch dieses Produkt dargestellt wird, wird als zusammengesetzte Transformation bezeichnet. Angenommen, Matrix R stellt eine Drehung und Matrix T eine Übersetzung dar. Wenn Matrix M das Produkt RT ist, stellt Matrix M eine zusammengesetzte Transformation dar: zuerst drehen und dann übersetzen.

Die Reihenfolge der Matrixmultiplikation ist wichtig. Im Allgemeinen ist das Matrixprodukt RT nicht identisch mit dem Matrixprodukt TR. Im Beispiel im vorherigen Absatz ist die durch RT dargestellte zusammengesetzte Transformation (zuerst rotieren, dann übersetzen) nicht mit der zusammengesetzten Transformation identisch, die durch TR dargestellt wird (zuerst übersetzen, dann rotieren).

Beispiele

Im folgenden Beispiel wird ein PathGradientBrush-Objekt basierend auf einem dreieckigen Pfad erstellt. Der Code ruft die PathGradientBrush::ScaleTransform-Methode des PathGradientBrush-Objekts auf, um die Transformationsmatrix des Pinsels mit den Elementen zu füllen, die eine horizontale Skalierung um den Faktor 3 darstellen. Anschließend ruft der Code die PathGradientBrush::MultiplyTransform-Methode desselben PathGradientBrush-Objekts auf, um die vorhandene Transformationsmatrix des Pinsels mit einer Matrix zu multiplizieren, die eine Übersetzung darstellt (10 rechts, 30 nach unten). Das Argument MatrixOrderAppend gibt an, dass die Multiplikation mit der Übersetzungsmatrix auf der rechten Seite ausgeführt wird.

Nach der Multiplikation stellt die Transformationsmatrix des Pinsels eine zusammengesetzte Transformation dar: erste Skalierung und dann übersetzen. Diese zusammengesetzte Transformation wird während des Aufrufs von FillRectangle auf den Begrenzungspfad des Pinsels angewendet, sodass der Bereich innerhalb des transformierten Pfads gezeichnet wird.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP, Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile gdipluspath.h (include Gdiplus.h)
Bibliothek Gdiplus.lib
DLL Gdiplus.dll

Weitere Informationen

Pinsel und gefüllte Formen

Erstellen eines Pfadverlaufs

Füllen einer Form mit einem Farbverlauf

Matrix

Matrixdarstellung von Transformationen

Matrixorder

Pathgradientbrush

PathGradientBrush::GetTransform

PathGradientBrush::ResetTransform

PathGradientBrush::RotateTransform

PathGradientBrush::ScaleTransform

PathGradientBrush::SetTransform

PathGradientBrush::TranslateTransform

Transformationen