GdipTranslateLineTransform()



Syntaxe
Resultat.i = GdipTranslateLineTransform(*brush, dx.f, dy.f, order.i)
Paramètres
*brush

[in] Pointeur sur un objet LinearGradientBrush.

dx.f

[in] Valeur de translation sur l'axe x.

dy.f

[in] Valeur de translation sur 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 translation dont les valeurs sont contenues dans les paramètres dx.f et dy.f.
En conséquence, le dégradé subit une transformation en fonction des valeurs passées par dx.f et dy.f en suivant l'ordre définit par order.l.

Cette fonction effectue une translation des origines de la brush sur le rendu de la brush selon les valeurs spécifiées.

On défini une image de 200 x 200 et une brush de 200 x 200 (brush d'origine).
La brush est définie avec la fonction  GdipCreateLineBrushFromRect()
La première couleur est le blanc et la couleur d'arrivée le rouge.
Mode #LinearGradientModeHorizontal
WrapMode #WrapModeTile

Voici le rendu de la brush.

Exemple :

On va appliquer à cette brush la translation suivante :

dx.f = 50

L'origine en X de la brush a subi un "glissement" vers la droite (sx > 0) de 50 pixels, les 50 derniers pixels de la brush d'origine (les plus à droite) viennent au début du nouveau rendu.

dy.f = 0

La hauteur de la brush étant de 200 pixels, cela veut dire que l'origine en Y de la brush commence à partir du pixel 0 qui est son origine. Pas de changement en Y pour la brush. De toute façon, la modification de sy ne modifie en rien cette brush qui a le mode #LinearGradientModeHorizontal tout comme la modification de sx ne modifie en rien une brush qui a le mode #LinearGradientModeVertical.

Voici le rendu de la brush :

On voit tout de suite que le dégradé s'est déplacé.

Après une première modification avec cette commande, la brush a réellement pour origine en X la position située à 50 par rapport à la fin de la brush avant modification. Si on applique une deuxième translation à la brush, c'est cette nouvelle origine qui sera pris comme 0 d'origine avant d'appliquer la deuxième translation.


On va appliquer à la brush d'origine (sans aucune modification), la translation suivante :

dx.f = 100

dy.f = 0

Voici le rendu de la brush :

On va appliquer à la brush d'origine (sans aucune modification), la translation suivante :

dx.f = 125

dy.f = 0

Voici le rendu de la brush :

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