GraphicsPath::Warp-Methode (gdipluspath.h)
Die GraphicsPath::Warp-Methode wendet eine Verzerrungstransformation auf diesen Pfad an. Die GraphicsPath::Warp-Methode vereinfacht auch den Pfad (konvertiert in eine Sequenz gerader Linien).
Syntax
Status Warp(
[in] const PointF *destPoints,
[in] INT count,
[in, ref] const RectF & srcRect,
[in] const Matrix *matrix,
[in] WarpMode warpMode,
[in] REAL flatness
);
Parameter
[in] destPoints
Typ: const PointF*
Zeiger auf ein Array von Punkten, das zusammen mit dem srcRect-Parameter die Verzerrungstransformation definiert.
[in] count
Typ: INT
Eine ganze Zahl, die die Anzahl der Punkte im DestPoints-Array angibt. Der Wert dieses Parameters muss 3 oder 4 sein.
[in, ref] srcRect
Typ: const RectF
Verweis auf ein Rechteck, das zusammen mit dem destPoints-Parameter die Verzerrungstransformation definiert.
[in] matrix
Typ: const Matrix*
Optional. Zeiger auf ein Matrix-Objekt , das eine Transformation darstellt, die zusammen mit der Verzerrung angewendet werden soll. Wenn dieser Parameter NULL ist, wird keine Transformation angewendet. Der Standardwert ist NULL.
[in] warpMode
Typ: WarpMode
Optional. Element der WarpMode-Enumeration , das die Art der anzuwendenden Verzerrung angibt. Der Standardwert ist WarpModePerspective.
[in] flatness
Typ: REAL
Optional. Reelle Zahl, die die Anzahl der Zeilensegmente beeinflusst, die zum Ungefähren des ursprünglichen Pfads verwendet werden. Kleine Werte geben an, dass viele Zeilensegmente verwendet werden, und große Werte geben an, dass nur wenige Zeilensegmente verwendet werden. Der Standardwert ist FlatnessDefault, eine konstante, die in Gdiplusenums.h definiert ist.
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
Ein GraphicsPath-Objekt speichert eine Auflistung von Datenpunkten, die Linien und Kurven darstellen. Die GraphicsPath::Warp-Methode konvertiert diese Datenpunkte so, dass sie nur Zeilen darstellen. Der Flatness-Parameter beeinflusst die Anzahl der gespeicherten Zeilen. Die ursprünglichen Datenpunkte, die Kurven darstellen, gehen verloren.
Wenn der count-Parameter den Wert 4 aufweist, wird die Verzerrungstransformation wie in der folgenden Tabelle dargestellt definiert.
Quellpunkt | Zielpunkt |
---|---|
Obere linke Ecke von srcRect | destPoints[0] |
Obere rechte Ecke von srcRect | destPoints[1] |
Linke untere Ecke von srcRect | destPoints[2] |
Untere rechte Ecke von srcRect | destPoints[3] |
Eine transformation, die durch ein Quellrechteck und vier Zielpunkte angegeben wird, kann ein Rechteck einem beliebigen Viereck zuordnen, das nicht unbedingt ein Parallelogramm ist.
Wenn der count-Parameter den Wert 3 aufweist, wird die Verzerrungstransformation wie in der folgenden Tabelle dargestellt definiert.
Quellpunkt | Zielpunkt |
---|---|
Obere linke Ecke von srcRect | destPoints[0] |
Obere rechte Ecke von srcRect | destPoints[1] |
Linke untere Ecke von srcRect | destPoints[2] |
Eine transformation, die durch ein Quellrechteck und drei Zielpunkte angegeben wird, ordnet Rechtecke Parallelogrammen zu.
Beispiele
Im folgenden Beispiel wird ein GraphicsPath-Objekt erstellt und dem Pfad eine geschlossene Abbildung hinzugefügt. Der Code definiert eine Verzerrungstransformation, indem ein Quellrechteck und ein Array von vier Zielpunkten angegeben werden. Das Quellrechteck und die Zielpunkte werden an die Warp-Methode übergeben. Der Code zeichnet den Pfad zweimal: einmal, bevor er verzogen wurde, und einmal, nachdem er verzog wurde.
VOID WarpExample(HDC hdc)
{
Graphics graphics(hdc);
// Create a path.
PointF points[] ={
PointF(20.0f, 60.0f),
PointF(30.0f, 90.0f),
PointF(15.0f, 110.0f),
PointF(15.0f, 145.0f),
PointF(55.0f, 145.0f),
PointF(55.0f, 110.0f),
PointF(40.0f, 90.0f),
PointF(50.0f, 60.0f)};
GraphicsPath path;
path.AddLines(points, 8);
path.CloseFigure();
// Draw the path before applying a warp transformation.
Pen bluePen(Color(255, 0, 0, 255));
graphics.DrawPath(&bluePen, &path);
// Define a warp transformation, and warp the path.
RectF srcRect(10.0f, 50.0f, 50.0f, 100.0f);
PointF destPts[] = {
PointF(220.0f, 10.0f),
PointF(280.0f, 10.0f),
PointF(100.0f, 150.0f),
PointF(400.0f, 150.0f)};
path.Warp(destPts, 4, srcRect);
// Draw the warped path.
graphics.DrawPath(&bluePen, &path);
// Draw the source rectangle and the destination polygon.
Pen blackPen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&blackPen, srcRect);
graphics.DrawLine(&blackPen, destPts[0], destPts[1]);
graphics.DrawLine(&blackPen, destPts[0], destPts[2]);
graphics.DrawLine(&blackPen, destPts[1], destPts[3]);
graphics.DrawLine(&blackPen, destPts[2], destPts[3]);
}
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 |