LinearGradientBrush::TranslateTransform-Methode (gdiplusbrush.h)
Die LinearGradientBrush::TranslateTransform-Methode aktualisiert die aktuelle Transformationsmatrix dieses Pinsels mit dem Produkt aus sich selbst und einer Übersetzungsmatrix.
Syntax
Status TranslateTransform(
[in] REAL dx,
[in] REAL dy,
[in] MatrixOrder order
);
Parameter
[in] dx
Typ: REAL
Reelle Zahl, die die horizontale Komponente der Übersetzung angibt.
[in] dy
Typ: REAL
Reelle Zahl, die die vertikale Komponente der Übersetzung angibt.
[in] order
Typ: MatrixOrder
Optional. Element der MatrixOrder-Enumeration , das die Reihenfolge der Multiplikation angibt. MatrixOrderPrepend gibt an, dass sich die Übersetzungsmatrix auf der linken Seite befindet, und MatrixOrderAppend gibt an, dass sich die Übersetzungsmatrix 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, gibt sie eines der anderen Elemente der Status-Enumeration zurück.
Hinweise
Eine einzelne 3 ×3-Matrix kann jede Sequenz affiner 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 von diesem Produkt dargestellt wird, wird als zusammengesetzte Transformation bezeichnet. Angenommen, Matrix S stellt eine Skalierung dar, und Matrix T stellt eine Übersetzung dar. Wenn Matrix M der Produkt-ST ist, stellt matrix M eine zusammengesetzte Transformation dar: zuerst skalieren, dann übersetzen.
Die Reihenfolge der Matrixmultiplikation ist wichtig. Im Allgemeinen ist das Matrixprodukt RT nicht mit dem Matrixprodukt TR identisch. Im Beispiel im vorherigen Absatz ist die durch RT dargestellte zusammengesetzte Transformation (zuerst rotieren, dann übersetzen) nicht mit der zusammengesetzten Transformation identisch, die von 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 ändert der Code die Transformationsmatrix des Pinsels, wendet eine zusammengesetzte Transformation an und füllt dann ein Rechteck mit dem transformierten Pinsel.
VOID Example_TranslateTrans(HDC hdc)
{
Graphics myGraphics(hdc);
LinearGradientBrush linGrBrush(
Rect(0, 0, 80, 40),
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
LinearGradientModeHorizontal);
// Fill a large area with the linear gradient brush (no transformation).
myGraphics.FillRectangle(&linGrBrush, 0, 0, 800, 150);
// Apply a composite transformation: first scale, then translate.
linGrBrush.ScaleTransform(2, 1); // horizontal doubling
linGrBrush.TranslateTransform(30, MatrixOrderAppend);// translation
// Fill a large area with the transformed linear gradient brush.
myGraphics.FillRectangle(&linGrBrush, 0, 200, 800, 150);
}
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 | gdiplusbrush.h (include Gdiplus.h) |
Bibliothek | Gdiplus.lib |
DLL | Gdiplus.dll |
Weitere Informationen
Füllen von Shapes mit einem Farbverlaufpinsel
LinearGradientBrush::MultiplyTransform
LinearGradientBrush::ResetTransform
LinearGradientBrush::RotateTransform
LinearGradientBrush::ScaleTransform