GdipPathIterNextMarker()



Syntaxe
Resultat.i = GdipPathIterNextMarker(*iterator, @resultCount.l, @startIndex.l, @endIndex.l)
Paramètres
*iterator

[in] Pointeur sur un objet GraphicsPathIterator existant.

resultCount.l

[out] resultCount recevra le nombre de points appartenant à la section délimitée par les marqueurs. S'il n'y a plus de section délimitée par les marqueurs, resultCount aura la valeur 0.

startIndex.l

[out] startIndex recevra l'index de début de la section délimitée par les marqueurs.

endIndex.l

[out] endIndex recevra l'index de fin de la section délimitée par les marqueurs.

Description

Cette fonction permet d'obtenir l'index de début et l'index de fin de la prochaine section délimitée par des marqueurs du GraphicsPath associé au GraphicsPathIterator.

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.

La fonction GdipSetPathMarker() permet de définir le dernier point du tracé comme un marqueur. Les marqueurs divisent le GraphicsPath en sections.

La première fois que l'on utilise la fonction GdipPathIterNextMarker(), on obtient la première section délimitée par un marqueur. Au second appel da la fonction, on obtient la deuxième section et ainsi de suite. Chaque fois que vous appelez la fonction, elle renvoie le nombre de points retrouvés dans la section. S'il n'y a plus aucune section, resultCount est mis à 0. La fonction GdipPathIterRewind() permet de repositionner l'itérateur au début du GraphicsPath qui lui est associé pour pouvoir recommencer la séquence.

Le premier exemple va créer un GraphicsPath et lui ajoute 4 lignes pour obtenir un parallélogramme, ajoute une ellipse et un rectangle. On retrouve la section entre le premier et le deuxième marqueur en appelant deux fois de suite la fonction et on affiche un point rouge à l'emplacement de chaque points délimitant la section et dans cet exemple la section délimite l'ellipse (coordonnées du rectangle englobant l'ellipse).

Le second exemple va créer un GraphicsPath et lui ajoute 4 lignes pour obtenir un parallélogramme, ajoute une ellipse et un rectangle. A l'aide d'un timer, on parcourt le path avec la fonction et l'on retrouve les différentes sections entre les marqueurs. A chaque nouvelle section, on affiche un point rouge à l'emplacement de chaque points délimitant la section. Lorsqu'il n'y a plus de sections, on se repositionne au début du path avec la fonction GdipPathIterRewind().

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