GdipCreateMatrix3()



Syntaxe
Resultat.i = GdipCreateMatrix3(@nRect.RectF, @dstplg.PointF, @*matrix)
Paramètres
nRect.RectF

[in] Coordonnées du rectangle à transformer exprimées sous forme de valeurs de type flottant.

dstplg.PointF

[in] Tableau de 3 éléments PointF (nombres flottants) qui définissent les points du parallélogramme que deviendront respectivement les angles supérieur gauche, supérieur droit et inférieur gauche du rectangle après la transformation.

*matrix

[out] *matrix recevra le pointeur sur le nouvel objet Matrix créé.

Description
Cette fonction permet de créer et d'initialiser un objet Matrix et représente une transformation affine.
Cette matrice est basée sur les coordonnées (nombres flottants) d'une variable de quatre valeurs (
nRect.RectF) et d'un tableau de trois variables de type pointF (dstplg.PointF).

Les coordonnées du rectangle définissent la partie de l'objet qui sera affecté par les transformations de la matrice.

Le tableau de trois variables PointF (dstplg.PointF) représente les points du parallélogramme que deviendront respectivement les angles supérieur gauche, supérieur droit et inférieur gauche du rectangle après la transformation. L'angle inférieur droit du parallélogramme est défini par les trois premiers angles.

Cette matrice permet de définir les trois transformations suivantes (transformation composite):

La mise à l'échelle (scale)
La rotation (rotate)
La translation (translate)

Selon les valeurs des paramètres, il est possible d'utiliser une, deux ou trois transformations.

Exemple :

Le rectangle est défini comme ceci:

nRect\x = 0
nRect\y = 0
nRect\width = 100
nRect\height = 150

Si on veut appliquer une mise à l'échelle en X de 3 et en Y de 2 sans rotation ni translation, on obtiendra un carré ayant pour côté une valeur de 300 (width * 3 et height *2).

Le premier point du tableau représente le point de l'angle supérieur gauche, il ne change pas et les valeurs sont x= 0 et y= 0

dstplg(0)\x = 0
stplg(0)\y = 0

Le second point du tableau représente le point de l'angle supérieur droit. Les nouvelles valeurs sont :

dstplg(1)\x = 300    ; nRect\width * 3
stplg(1)\y = 0            ; nRect\y * 2

Le troisième point du tableau représente le point de l'angle inférieur gauche. Les nouvelles valeurs sont :

dstplg(2)\x = 0        ; nRect\x * 3
stplg(2)\y = 300     ; nRect\height * 2

Le fichier d'exemple reprend ces valeurs.

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