GdipScalePathGradientTransform()



Syntaxe
Resultat.i = GdipScalePathGradientTransform(*brush, sx.f, sy.f, order.i)

Paramètres

*brush

[in] Pointeur sur un objet PathGradientBrush.

sx.f

[in] Coefficient multiplicateur (valeur d'ajustement) de la transformation dans la direction de l'axe x.

sy.f

[in] Coefficient multiplicateur (valeur d'ajustement) de la transformation dans la direction de l'axe y.

order.i

[in] Élément de l'énumération MatrixOrder qui indique l'ordre de la multiplication des matrices. MatrixOrderPrepend indique que la multiplication se fait de gauche à droite et MatrixOrderAppend indique que la multiplication se fait de droite à gauche. La valeur par défaut est MatrixOrderPrepend. Ces valeurs déterminent l'ordre d'application des transformations tel que défini par l'énumération MatrixOrder.

Description

Cette fonction met à jour la matrice de transformation courante de la brush avec le résultat du produit de la matrice courante et d'une matrice de mise à l'échelle dont les valeurs sont contenues dans les paramètres sx.f et sy.f.
En conséquence, le dégradé subit une transformation en fonction des valeurs passées par sx.f et sy.f en suivant l'ordre définit par order.l.
Cette fonction effectue une mise à l'échelle de la brush.

La brush n'est pas redimensionnée (un appel à une des fonctions comme GdipGetPathGradientRect() ou GdipGetPathGradientRectI() retourne la taille d'origine de la brush), mais c'est la matrice de transformation appliquée à la brush qui va modifier le rendu par rapport à la brush d'origine.
La mise à l'échelle applqiue un coefficient aux dimensions en x et/ou y.
Si sx est inférieur à
Si sx vaut 0, la distance sur l'axe X est nulle
Si sx >0 et x <1 la distance sur l'axe X sera plus petite que la distance d'origine. Par exemple, si sx vaut 0.20, la distance sera de 20% de la distance d'origne.
Si sx >1 la distance sur l'axe X sera plus grande que la distance d'origine. Par exemple, si sx vaut 1.20, la distance sera de 20% plus grande que la distance d'origine.
Idem pour sy.
Voici un exemple de fonctionnement (extrait du fichier d'exemple) :
On défini une brush en forme de losange, centre rouge et contour blanc.
Largeur et hauteur 200 pixels.
La brush est définie avec la fonction GdipCreatePathGradient()
La première couleur est le rouge et la couleur d'arrivée le blanc.
WrapMode
#WrapModeTile
Brush dessinée dans un carré de 200 x 200
Voici le rendu de la brush
Exemple :
On va appliquer à cette brush, la mise à l'échelle suivante :
sx.f = 0.2
sy.f = 0.2
sx valant 0.2, on aura la largeur de la brush qui sera redimensionnée comme ceci (en x)
200 x 0.2 = 40 (la largeur est multipliée par sx)
sy valant 0.2, on aura la largeur de la brush qui sera redimensionnée comme ceci(en y)
200 x 0.2= 40 (la hauteur est multipliée par sy)
La taille étant d'un rapport de 1/5 plus petite que la taille d'origine, il y aura répétition du motif, soit 5 fois en hauteur et 5 fois en largeur.
order vaut #MatrixOrderAppend pour la mise à l'échelle.
Le nouveau rendu de la brush donne ceci :

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