LinearGradientBrush::MultiplyTransform-Methode (gdiplusbrush.h)
Die LinearGradientBrush::MultiplyTransform-Methode aktualisiert die Transformationsmatrix dieses 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: const Matrix*
Zeiger auf eine Matrix, die mit der aktuellen Transformationsmatrix des Pinsels multipliziert werden soll.
[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 dar, und Matrix T stellt 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 linearer Farbverlaufspinsel erstellt und zum Ausfüllen eines Rechtecks verwendet. Als Nächstes legt der Code die Transformationsmatrix des Pinsels fest, füllt ein Rechteck mit dem transformierten Pinsel, ändert die Transformationsmatrix des Pinsels und füllt erneut ein Rechteck mit dem transformierten Pinsel aus.
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);
}
Anforderungen
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 | gdiplusbrush.h (include Gdiplus.h) |
Bibliothek | Gdiplus.lib |
DLL | Gdiplus.dll |
Weitere Informationen
Füllen von Formen mit einem Farbverlaufpinsel
LinearGradientBrush::RotateTransform
LinearGradientBrush::ScaleTransform
LinearGradientBrush::TranslateTransform