GdipSetLineBlend()



Syntaxe
Resultat.i = GdipSetLineBlend(*brush, @blend.f(), @positions.f(), count.l)
Paramètres
*brush

[in] Pointeur sur un objet LinearGradientBrush.

blend.f()

[in] Tableau de nombres flottants (facteurs de mélange).
Chaque nombre du tableau indique un pourcentage de la couleur d'arrivée et doit être compris entre 0.0 et 1.0

positions.f()

[in] Tableau de nombres flottants indiquant les positions relatives pour le mélange des couleurs.
Chaque nombre du tableau indique un pourcentage de la distance entre le début et la fin du dégradé et doit être compris entre 0.0 et 1.0.
0.0 indique le début (0%) du dégradé et des 1.0 en indique la fin (100%).
Il doit y avoir au moins deux positions indiquées : la première position, qui vaut toujours 0.0 et la dernière qui vaut toujours 1.0. Si d'autres valeurs de début et de fin sont appliquées, le comportement est indéfini.
Une valeur de 0.2 indique une position à 20% par rapport au début du dégradé.
Les couleurs correspondantes s'appliquent à la ligne entière.

count.l

[in] Nombre d'éléments des deux tableaux ci-dessus. Le nombre d'éléments des tableaux blend et positions doit être strictement identique.

Description
Cette fonction permet un mélange des couleurs du dégradé linéaire avec le fonctionnement suivant.

Exemple avec les 2 tableaux ayant chacun trois éléments.

La couleur relative est toujours par rapport à la couleur d'arrivée de la brush, qui est le paramètre appelé color2 dans cette documentation (voir les brush).
Couleur (color1) de départ de la brush : blanc  avec opacité complète (couche alpha = 255).
Couleur (color2) d'arrivée de la brush : rouge  avec opacité complète (couche alpha = 255).

Le dégradé normal donne ceci (200 pixels de large):

Pour positionner à partir du pixel 40 (20% de la largeur) la couleur rouge (couleur d'arrivée) atténuée de 50% (transparente à 50%), on donne les valeurs suivantes :

blend(0) = 0.0   ; 0% de la couleur rouge
blend(1) = 0.5    ; 50% de la couleur rouge
blend(2) = 1.0   ; 100% de la couleur rouge

positions(0) = 0.0   ; toujours cette valeur
positions(1) = 0.2    ; correspond à 20% du dégradé soit 40 pixels (200 x 0,2)
positions(2) = 1.0   ; toujours cette valeur

Le dégradé modifié avec la fonction GdipSetLineBlend() donne ceci (200 pixels de large):

Au pixel 40 (repère vertical noir) on a la couleur  rgb(128,0,0). On a un premier dégradé du point 1 au point 40 puis un second dégradé qui commence avec cette même couleur pour se terminer par du rouge pure (red = 255, green = 0 et blue = 0)

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