GdipScaleMatrix()
Syntaxe
|
Resultat.i = GdipScaleMatrix(*matrix, scaleX.f, scaleY.f, order.i)
Paramètres
|
*matrix[in] Pointeur sur un objet Matrix.
scaleX.f[in] Coefficient multiplicateur (valeur d'ajustement) de la transformation dans la direction de l'axe X.
scaleY.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 passée en paramètre en faisant le produit de cette matrice par les valeurs de mise à l'échelle des paramètres scaleX.f, scaleY.f et order.l.
Le paramètre order.l intervient lorsqu'il y a plusieurs transformations appliquées à la matrice, et l'ordre d'application est défini en fonction de la valeur de l'énumération MatrixOrder.
Cette fonction effectue une mise à l'échelle de la matrice.
Cette matrice peut ensuite être appliquée à des objets GDI+ (graphiques etc.).
L'exemple du fichier GdipScaleMatrix.pb utilise 2 pen de couleur différente. Le graphique est défini par rapport à la fenêtre principale.
Deux graphiques différents ont été utilisés (*gfx1 et *gfx2) pour définir 2 surfaces de dessins qui sont identiques mais bien distinctes en tant qu'objet GDI+.
A l'aide du premier pen, on dessine sur la surface *gfx1, un rectangle rouge à partir des coordonnées x=0 et y = 0 et de 100 x 100.
A l'aide du second pen, on dessine sur la surface *gfx2, un rectangle noir à partir des coordonnées x=0 et y = 0 et de 100 x 100. Mais avant de le dessiner, le graphique *gfx2 a subi une mise à l'échelle (multiplication de 3 selon l'axe X et par 2 selon l'axe Y). Le second graphique démarre bien à x=0 et y = 0 mais la longueur du côté de l'axe X a été multiplié par 3 et la longueur du côté de l'axe Y a été multiplié par 2.
Pour cet exemple, on pourrait n'utiliser qu'un seul graphique, mais si l'événement PB #PB_Event_Repaint intervient, le carré rouge sera dessiné mais avec une mise à l'échelle puisqu'il n'y aurait qu'un seul graphique mis à l'échelle et il serait immédiatement recouvert par le rectangle noir, on aurait l'impression que le premier carré n'existerait pas. Le fait de créer 2 graphiques distincts permet pour l'exemple, de ne pas avoir de problème avec l'événement #PB_Event_Repaint.
L'exemple du fichier GdipScaleMatrix_2.pb utilise le même code que l'exemple du premier fichier, mais au lieu de dessiner les rectangles à partir de x=0 et y=0, on les dessine à x=50 et y=50. La mise à l'échelle de la matrice suivi de l'application de la matrice au graphique *gfx2 (fonction GdipSetWorldTransform()) fait que le rectangle noir commence non pas à x=50 mais à x=150, l'origine a été multiplié par 3 en X et par 2 en Y.
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