GdipRotatePenTransform()



Syntaxe
Resultat.i = GdipRotatePenTransform(*pen, angle.f, order.i)
Paramètres
*pen

[in] Pointeur sur un objet Pen.

angle.f

[in] Paramètre de type flottant indiquant la rotation en degrés. La rotation se fait dans le sens des aiguilles d'une montre si angle.f est positif, sinon dans le sens contraire.

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 du pen avec le résultat du produit de la matrice courante et de la matrice de rotation dont les valeurs sont contenues dans les paramètres angle.f et order.l.
En conséquence, le pen subi une rotation angulaire selon la valeur passée par angle.f en suivant l'ordre définit par order.l.

La rotation se fait dans le sens trigonométrique si l'angle est négatif, sinon la rotation se fait dans le sens contraire.

L'exemple du fichier crée un pen bleu d'épaisseur 2 dans l'unité #UnitWorld pour pouvoir appliquer la matrice.
Deux autres pen sont créés identiques au premier. Ces 3 pen servirons à dessiner un premier camembert sans transformation, le second va subir une mise à l'échelle sans rotation et dessinera un second camembert et le dernier va subir une mis à l'échelle puis une rotation de 30 ° et dessinera un troisième camembert.

La matrice modifie la mise à l'échelle en X de 1 et en Y de 9.
La rotation de 30 degrés est appliquée au pen avec la fonction GdipRotatePenTransform().

Aperçu du camembert sans transformation :

On applique au pen la mise à l'échelle en X de 1 (pas de modifications) et en Y de 9 avec la commande GdipMultiplyPenTransform(). On pourra comparer le rendu avec celui comportant cette mise à l'échelle et la rotation de 30°.

Aperçu du camembert avec mise à l'échelle du pen (sans rotation) :

Aperçu du camembert avec mise à l'échelle du pen et rotation de 30° :


Pour le rendu final ci-dessus, on applique une rotation de 30 degrés au pen avec la fonction GdipRotatePenTransform(). Le paramètre order.l pour cette fonction vaut #MatrixOrderAppend, ce qui signifie que cette opération sera appliquée après une transformation précédente du pen si elle existe, mais il n'y en a pas, le paramètre n'a pas d'influence.
Puis on applique la mise à l'échelle avec la fonction GdipMultiplyPenTransform(). Le paramètre order.l pour cette fonction vaut #
MatrixOrderPrepend, ce qui veut dire que cette transformation est appliquée avant la précédente transformation si elle existe, et c'est le cas puisqu'il s'agit de la rotation angulaire de 30 degrés.

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