Comment faire pivoter une image, par ex. 180 degrés dans le sens horaire en utilisant la matriceFlex Matrix rotate Image n degrés
je peux utiliser le code suivant pour faire pivoter l'image de 90 degrés, mais il est incrémentale, meaing
var matrix:Matrix = new Matrix();
matrix.rotate(Math.PI/2);
matrix.tx = imgControl.content.height;
var bitmapData:BitmapData = new BitmapData(imgControl.content.height, imgControl.content.width);
bitmapData.draw(imgControl.content, matrix);
imgControl.source = new Bitmap(bitmapData);
Chaque fois que je lance le code de l'image est mise en rotation de +90 degrés. Ce que je veux, c'est ne pas incrémenter de 90 à chaque fois, mais explicitement dire tourner 180, faire pivoter 90 et ainsi de suite.
Je ne suis pas familier avec la matrice, mais je suppose que c'est la manipulation de bitmapdata réel plutôt que juste par exemple. faites pivoter la case du composant Image (arrêtez-moi si je me trompe).
Si oui, je suppose que je dois réinitialiser l'image chaque fois que je fais la commande de rotation.
Ai-je raté quelque chose?
Merci à l'avance pour tous les conseils et astuces
Ran
Parlé comme un véritable Oracle. Je pense que c'est celui-là. –
matrix.rotate (Math.PI/2 * 2); Rend l'image disparue – Ran
oh oui! c'est pour ça que la ligne 'matrix.tx' est là! .rotate tourne autour d'un coin de l'image (probablement en bas à gauche?); donc vous faites pivoter l'image "out" de la boîte/rectangle, de sorte que vous devez traduire (shift/push) l'image dans la boîte. vous pouvez le faire avec .tx pour x direction et je suppose .ty pour y direction. Prenez un morceau de papier et dessinez-le par vous-même, et expérimentez avec du code, pour voir quelle direction vous devez traduire et de combien. –