GraphicsPath ::Warp, méthode (gdipluspath.h)

La méthode GraphicsPath ::Warp applique une transformation de déformation à ce chemin. La méthode GraphicsPath ::Warp aplatit également (convertit en séquence de lignes droites) le chemin.

Syntaxe

Status Warp(
  [in]      const PointF  *destPoints,
  [in]      INT           count,
  [in, ref] const RectF & srcRect,
  [in]      const Matrix  *matrix,
  [in]      WarpMode      warpMode,
  [in]      REAL          flatness
);

Paramètres

[in] destPoints

Type : const PointF*

Pointeur vers un tableau de points qui, avec le paramètre srcRect , définit la transformation de chaîne.

[in] count

Type : INT

Entier qui spécifie le nombre de points dans le tableau destPoints . La valeur de ce paramètre doit être 3 ou 4.

[in, ref] srcRect

Type : const RectF

Référence à un rectangle qui, avec le paramètre destPoints , définit la transformation de chaîne.

[in] matrix

Type : const Matrix*

facultatif. Pointeur vers un objet Matrix qui représente une transformation à appliquer avec la chaîne. Si ce paramètre a la valeur NULL, aucune transformation n’est appliquée. La valeur par défaut est NULL.

[in] warpMode

Type : WarpMode

facultatif. Élément de l’énumération WarpMode qui spécifie le type de chaîne à appliquer. La valeur par défaut est WarpModePerspective.

[in] flatness

Type : REAL

facultatif. Nombre réel qui influence le nombre de segments de ligne utilisés pour se rapprocher du chemin d’origine. Les petites valeurs spécifient que de nombreux segments de ligne sont utilisés, et les valeurs grandes spécifient que peu de segments de ligne sont utilisés. La valeur par défaut est FlatnessDefault, qui est une constante définie dans Gdiplusenums.h.

Valeur retournée

Type : État

Si la méthode réussit, elle retourne Ok, qui est un élément de l’énumération Status .

Si la méthode échoue, elle retourne l’un des autres éléments de l’énumération Status .

Remarques

Un objet GraphicsPath stocke une collection de points de données qui représentent des lignes et des courbes. La méthode GraphicsPath ::Warp convertit ces points de données afin qu’ils ne représentent que des lignes. Le paramètre flatness influence le nombre de lignes stockées. Les points de données d’origine qui représentaient des courbes sont perdus.

Si le paramètre count a une valeur de 4, la transformation de chaîne est définie comme indiqué dans le tableau suivant.

Point source Point de destination
Coin supérieur gauche de srcRect destPoints[0]
Coin supérieur droit de srcRect destPoints[1]
Coin inférieur gauche de srcRect destPoints[2]
Coin inférieur droit de srcRect destPoints[3]
 

Une transformation spécifiée par un rectangle source et quatre points de destination est capable de mapper un rectangle à un quadrilatère arbitraire qui n’est pas nécessairement un paralléliogramme.

Si le paramètre count a une valeur de 3, la transformation de chaîne est définie comme indiqué dans le tableau suivant.

Point source Point de destination
Coin supérieur gauche de srcRect destPoints[0]
Coin supérieur droit de srcRect destPoints[1]
Coin inférieur gauche de srcRect destPoints[2]
 

Une transformation spécifiée par un rectangle source et trois points de destination mappe les rectangles à des parallélogrammes.

Exemples

L’exemple suivant crée un objet GraphicsPath et ajoute une figure fermée au chemin d’accès. Le code définit une transformation de chaîne en spécifiant un rectangle source et un tableau de quatre points de destination. Le rectangle source et les points de destination sont passés à la méthode Warp . Le code dessine le chemin deux fois : une fois avant qu’il ait été déformé et une fois après qu’il a été déformé.


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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP, Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête gdipluspath.h (include Gdiplus.h)
Bibliothèque Gdiplus.lib
DLL Gdiplus.dll

Voir aussi

Découpage avec une région

Génération et dessin de tracés

Création d’un dégradé de chemin

Aplatissement des chemins

Graphicspath

GraphicsPath ::Flatten

GraphicsPath ::Outline

GraphicsPath ::Widen

Matrice

Chemins d’accès

WarpMode