GdipPathIterCopyData()



Syntaxe
Resultat.i = GdipPathIterCopyData(*iterator, *resultCount.l, @points.PointF, *types.byte, startIndex.l, endIndex.l)

Paramètres

*iterator

[in] Pointeur sur un objet GraphicsPathIterator existant.

resultCount.l

[out] resultCount recevra le nombre de points copiés dans les tableaux.

points.PointF

[out] Tableau de variables PointF (nombres flottants) qui recevra les points de données du GraphicsPath.

*types

[out] Pointer sur un tableau d'octets qui recevra les types des points du GraphicsPath. Les valeurs du tableau sont des éléments de l'énumération PathPointType.

startIndex.l

[in] Spécifie l'index de début des tableaux de points et de types à copier.

endIndex.l

[in] Spécifie l'index de fin des tableaux de points et de types à copier.

Description

Cette fonction permet de copier un sous-ensemble des points du GraphicsPath dans un tableau de PointF et de copier également un sous-ensemble des types de points du GraphicsPath dans un tableau d'octets. Pour copier l'ensemble des points, utiliser la fonction GdipPathIterEnumerate().
Certaines fonctions des GraphicsPath ne stockent pas les tableaux de points d'origine des formes ajoutées mais elles convertissent les courbes (spline cardinale etc.) en une suite de courbes de Bézier et sauvegardent les points qui définissent ces courbes de Bézier. Il en résulte que le nombre de points retrouvés est plus important que le nombre de points d'origine définissant les figures. Toutes les courbes du path sont représentées comme des splines de Bézier, ainsi un point donné du tableau a un des deux types suivant: #PathPointTypeLine ou #PathPointTypeBezier.
Un GraphicsPathIterator associé à un GraphicsPath possède un tableau de points et un tableau de types (type des points). Chaque élément du tableau de types est un octet qui indique le type du point et un jeu de drapeaux pour l'élément correspondant du tableau de points. Les types de point possibles et les drapeaux sont des éléments de l'énumération PathPointType. Vous pouvez utiliser la fonctions GdipPathIterGetCount() pour déterminer le nombre de points de données du GraphicsPath. Le paramètre points.PointF pointe la zone mémoire qui recevra les points des données du GraphicsPath et le paramètre *types pointe la zone mémoire qui recevra les types de points. Avant d'utiliser la fonction GdipPathIterCopyData(), on doit allouer assez de mémoire pour les tableaux (voir exemple).
startIndex et endIndex précisent respectivement l'index de début et l'index de fin des tableaux de points et de type retrouvés. Les tableaux de points retrouvés sont ceux stockés par les fonctions graphiques.
La taille du tableau de points doit être le produit du nombre d'éléments à retrouver multiplié par sizeof(PointF). La taille du tableau de types doit être le nombre d'éléments à retrouver.
L'exemple va créer un courbe fermée (fonction GdipAddPathClosedCurve2()) à partir d'un tableau de 6 points. Cette courbe est stockée sous la forme d'une spline cardinale et le nombre de points retrouvés est de 19. Les points 2, 3, 4 et 5 sont retrouvés et affichés (ceux stockés par la fonction et non pas les points d'origine).

Résultat de la fonction

Si la fonction réussit, elle retourne #Ok qui est une constante de l'énumération status.
Si la fonction échoue, elle retourne une des autres valeurs de l'énumération status.

PB - OS

PureBasic v4.30 bêta 4 (Windows - x86)
Testé avec Windows Vista édition familiale Premium