GdipFillPolygon()



Syntaxe
Resultat.i = GdipFillPolygon(*graphics, *brush, @points.PointF, count.l, fillMode.i)
Paramètres
*graphics

[in] Pointeur sur un objet Graphics existant.

*brush

[in] Pointeur sur un objet brush utilisé pour remplir l'intérieur du polygone.

points.PointF

[in] Tableau de PointF (nombres flottants) qui représentent les points définissant les côtés du polygone.

count.l

[in] Nombre d'éléments du tableau de points points.PointF.

fillMode.i

[in] Elément de l'énumération FillMode.

Description

Cette fonction permet de dessiner un polygone sur le graphique *graphics dont les côtés sont définis par les points du tableau points.PointF et de remplir l'intérieur de la forme avec la brush *brush.

Tous les types de brush sont supportés.

Les polygones sont des figures fermées. Les deux premiers points du tableau définissent le premier côté du polygone. Chaque point additionnel définit un nouveau côté dont les sommets sont ce point additionnel et le point précédent.

Si le premier et le dernier point du tableau de points points.PointF ne sont pas confondus, la courbe est fermée en reliant ces deux points, ce segment est le dernier côté du polygone.

Le paramètre count.l indique à la fonction le nombre d'éléments du tableau points.PointF.

fillMode peut prendre une des deux valeurs suivantes :

#FillModeAlternate

Ce mode indique que les secteurs sont remplis selon la règle de parité paire-impaire.
Selon cette règle, vous pouvez déterminer si un point test est à l'intérieur ou en dehors d'une zone fermée comme ceci :
Tracez une ligne du point test jusqu'à un point situé nettement à l'extérieur du tracé. Si cette ligne traverse un nombre de fois impair le tracé, le point test est à l'intérieur de la région fermée et appartient donc à la zone de remplissage, sinon le point test est en dehors de la courbe (nombre d'intersections pair). Une figure ouverte est remplie ou découpée en traçant une ligne pour relier le dernier point au premier point de la figure.

#FillModeWinding

Ce mode indique que les secteurs sont remplis selon la règle de l'enroulement non zéro.
Selon cette règle, le mode tient compte du sens des segments du tracé à chaque intersection. Vous pouvez déterminer si un point test est à l'intérieur ou en dehors d'une zone fermée comme ceci :
Tracez une ligne d'un point test jusqu'à un point situé nettement à l'extérieur du tracé. Comptez le nombre de fois où la courbe croise votre ligne de gauche à droite ainsi que le nombre de fois où la courbe croise votre ligne de droite à gauche. Si ces deux nombres sont égaux (leur soustraction vaut 0), le point est en dehors de la zone à remplir, sinon le point est à l'intérieur de la zone à remplir.

 

L'exemple dessine deux polygones identiques (définis par 7 points) pendant un laps de temps défini par un timer. A chaque activation du timer, le remplissage est effectué avec un type de brush différent (5 brush différentes utilisées). Le polygone de gauche a le mode de remplissage (paramètre fillMode) mis à #FillModeAlternate et celui de droite à #FillModeWinding.

Aperçu du contour du polygone :

Aperçu du remplissage des 2 polygones de l'exemple :

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