GdipFillClosedCurve2()



Syntaxe
Resultat.i = GdipFillClosedCurve2(*graphics, *brush, @points.PointF, count.l, tension.f, 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 de la courbe.

points.PointF

[in] Tableau de variables PointF (nombres flottants) qui représentent les points définissant la courbe fermée (spline cardinale fermée).

count.l

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

tension.f

[in] Courbure de la courbe entre les points, la valeur 0 correspondant à la courbe la plus petite (angle le plus prononcé) et 1 représente la courbe la plus régulière.

fillMode.i

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

Description

Cette fonction permet de dessiner une spline cardinale fermée sur le graphique puis de remplir l'intérieur de la forme avec la brush.

Une spline cardinale est définie par des points et un paramètre de tension qui influence la forme de la courbe. C'est une suite de courbes individuelles jointes entre elles pour former une plus grande courbe. La courbe passe par chaque point de manière adoucie (sans angle aigu). Il en résulte une allure lissée (douce) de la courbe (sauf avec des valeurs faibles du paramètre tension).

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.

Le fichier d'exemple dessine 2 courbes identiques en 7 points. La première courbe a le paramètre fillMode mis à #FillModeAlternate et la seconde courbe a ce paramètre mis à #FillModeWinding. A l'aide d'un curseur, on peut modifier la valeur de la tension entre 0 et 2 et voir les modifications des courbes, y compris les zones remplies qui sont différentes.

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