Bonjour,
Voila, j'ai une image présente dans un canvas. J'aimerais lui faire faire une rotation (de n'importe quel angle) sur elle même.
Si vous avez une piste ou du code ce serait cool !
Merki !
+++
Ju
Bonjour,
Voila, j'ai une image présente dans un canvas. J'aimerais lui faire faire une rotation (de n'importe quel angle) sur elle même.
Si vous avez une piste ou du code ce serait cool !
Merki !
+++
Ju
Je viens de trouver un bout de code qui ne m'a pas l'air mal :
ici
Peut être que ca pourra en aider d'autres...
+++
Ju
Marrant, apparement qqun ne connait pas la classe TexturePaint. Mais bon d'un autre cote c'est peut-etre plus leger et ca marche avec des versions de Java plus anciennes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Pour obtenir une répétition de l'image à l'infini, la méthode getPixel() de la classe MyImage a été modifiée pour toujours retourner une valeur, quelles que soient les coordonnées demandées.
Sinon pour en revenir a la question, soit :
Au choix :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 double centerX = image.getWidth()/2.0; double centerY = image.getHeight()/2.0; Graphics2D graphics = ... graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 graphics.rotate(angle, centerX, centerY); graphics.drawImage(image, 0, 0, null); graphics.rotate(-angle, centerX, centerY);Avec production d'une nouvelle image :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 AffineTransform transform = AffineTransform.getRotateInstance(angle, centerX, centerY); graphics.setTransform(transform); graphics.drawImage(image, 0, 0, null); graphics.setTransform(transform.createInverse()); // Cette methode peut lever une exception.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 AffineTransform transform = AffineTransform.getRotateInstance(angle, centerX, centerY); AffineTransformOp op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BICUBIC); BufferedImage rotatedImage = op.filter(image, null);
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
pour la légèreté faut voir, vu le peu de célérité dont fait peu preuve java sur tout ce qui concerne la trigo...
Bof, ca peut s'arrancer avec la bonne vieille methode du "on se precalcule une table des sin et cos pour eviter de les recalculer a chaque fois".
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Heu il ne faut pas exagerer. Je code en ce moment meme des demos Java qui utilise de la trigo pour faire du rendu a 60 fps en plein ecran et il n'y a pas de probleme. Quand on dessine des images ce n'est pas un cos() qui fait perdre du temps ^^
Partager