GdipScaleTextureTransform()



Syntaxe
Resultat.i = GdipScaleTextureTransform(*brush, sx.f, sy.f, order.i.)
Paramètres
*brush

[in] Pointeur sur un objet TextureBrush.

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, la brush 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 mais c'est le rendu qui est mis à l'échelle.

On défini une TextureBrush basée sur une image de 130 x 130 (brush d'origine).
La brush est définie avec la fonction GdipCreateTexture()
WrapMode #
WrapModeTile
La brush est affichée sur une surface de 130 x 130

Voici le rendu de la brush d'origine

Exemple :

On va appliquer à cette brush, la mise à l'échelle suivante :

sx.f = 0,125 : sy.f = 0,125

la largeur de la brush sera redimensionnée comme ceci (en x)

130 x 0,125 = 16,25

la hauteur de la brush sera redimensionnée comme ceci (en u)

130 x 0,125 = 16,25

On va avoir une division par 8 en largeur et en hauteur de la brush, il y aura répétition du motif pour remplir la taille d'origine de la brush qui est de 130 x 130. La surface que va occuper un motif va être 64 fois plus petite que le motif d'origine. On aura sur la même surface que la brush d'origine, 64 fois le même motif, ayant pour origine (x=0,y=0).

Code :
; Application de la mise à l'échelle
        GdipScaleTextureTransform(*brush2, 0.125, 0.125, #MatrixOrderAppend)

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