GdipSetLinePresetBlend()



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

[in] Pointeur sur un objet LinearGradientBrush.

blend.i()

[in] Tableau de couleurs au format ARGB qui seront utilisées pour le mélange des couleurs.

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 de flottants blend et positions doit être strictement identique.

Description
Cette fonction permet un mélange des couleurs du dégradé linéaire.
Contrairement à la fonction GdipSetLineBlend(), cette fonction permet de mélanger des couleurs qui ne font pas partie du dégradé de la brush. Il est possible de redéfinir la couleur de départ et celle d'arrivée qui sont respectivement le premier et le dernier élément du tableau pointé par blend

Le fonctionnement est le suivant.

Exemple avec les 2 tableaux ayant chacun quatre éléments.
Dans l'exemple, la couche alpha vaut 255 pour chaque couleur.

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

Valeurs pour l'application de la fonction :

blend(0) =ARGB(#white)   ; du blanc
blend(1) = ARGB(#Yellow) ; du jaune
blend(2) =ARGB(#Green)    ; du vert
blend(3) =ARGB(#red)         ; du rouge

Au départ du dégradé, il y a la couleur blanche (élément blend(0) en correspondance avec positions(0)).

A 25% de la largeur (pixel 50) il y a la couleur jaune (élément blend(1) en correspondance avec positions(1)).

A 50% de la largeur (pixel 100) il y a la couleur verte (élément blend(2) en correspondance avec positions(2)).

A 100% de la largeur (position d'arrivée pixel 200) il y a la couleur rouge (élément blend(3) en correspondance avec positions(3)).

positions(0) = 0.00  ; toujours cette valeur, couleur correspondante blend(0)
positions(1) = 0.25    ; à 25% du début du dégradé on a la couleur correspondante blend(1)
positions(2) = 0.50   ; à 50% du début du dégradé on a la couleur correspondante blend(2)
positions(3) = 1.00    ; toujours cette valeur, couleur correspondante blend(3)

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


On a un premier dégradé du point 1 au point 50 (au pixel 50 (1er repère vertical noir) on a la couleur  jaune)
On a un second dégradé du point 51 au point 100 (au pixel 100 (2ème repère vertical noir) on a la couleur verte)
On a un dernier dégradé du point 101 au point 200

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