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
Génération et dessin de tracés