Freigeben über


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

Weitere Informationen

Beschneiden mit einer Region

Erstellen und Zeichnen von Pfaden

Erstellen eines Pfadverlaufs

Vereinfachen von Pfaden

Graphicspath

GraphicsPath::Flatten

GraphicsPath::Outline

GraphicsPath::Widen

Matrix

Paths

Warpmode