GdipScaleWorldTransform()



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

[in] Pointeur sur un objet Graphics existant.

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] Elé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 du graphique 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 graphique 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 du graphique.

L'exemple utilise un graphique à partir du Hdc de la fenêtre. On applique une translation au graphique (GdipTranslateWorldTransform()) de 10 pixels en x et de 10 pixels en y avec le paramètre order valant #MatrixOrderPrepend, mais ce paramètre n'a pas d'influence car il n'y a pas de transformation précédente; si order valait #MatrixOrderAppend, cela ne changerait pas non plus car il n'y a pas de modification précédente.
Ensuite, on applique une mise à l'échelle du graphique avec la fonction GdipScaleWorldTransform() en x de 4 et y de 4 (agrandissement en x de 4 et y de 4) avec le paramètre order valant #MatrixOrderPrepend, ce qui signifie que la mise à l'échelle est appliquée avant la translation.
Puis on dessine une ellipse en rouge à x=0, y=0 de 65 pixels de largeur par 20 pixels de hauteur.

L'ellipse rouge sera dessinée à x=10, y=10 (pas de mise à l'échelle de la translation) avec une largeur de 65 x 4 = 260 pixels et une hauteur de 20 x 4 = 80 pixels.

On réinitialise le graphique (il n'y a plus de transformation). On applique une translation au graphique (GdipTranslateWorldTransform()) de 10 pixels en x et de 10 pixels en y avec le paramètre order valant #MatrixOrderPrepend, mais ce paramètre n'a pas d'influence car il n'y a pas de transformation précédente; si order valait #MatrixOrderAppend, cela ne changerait pas non plus car il n'y a pas de modification précédente.
Ensuite, on applique une mise à l'échelle du graphique avec la fonction GdipScaleWorldTransform() en x de 4 et y de 4 (agrandissement en x de 4 et y de 4) avec le paramètre order valant #MatrixOrderAppend, ce qui signifie que la mise à l'échelle est appliquée après la translation.
Puis on dessine une ellipse en noir à x=0, y=0 de 65 pixels de largeur par 20 pixels de hauteur.

L'ellipse noire sera dessinée à x=40 pixels (10x4), y=40 (10x4) car il y a une mise à l'échelle de la translation; la largeur est de 65 x 4 = 260 pixels et une hauteur de 20 x 4 = 80 pixels.

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