2011-03-17 2 views
3

Ok, j'ai essayé de faire pivoter un rectangle qui se trouve au-dessus d'une image. J'ai une classe Scrollable qui affiche l'image. Je peux dessiner des rectangles au-dessus de l'image. Mon problème est d'essayer de faire pivoter les Rectangles lorsque l'image est tournée. Le rectangle est perdu et placé au mauvais endroit.Comment trouver un point d'ancrage/rotation en Java?

J'ai déjà essayé de poursuivre Graphics2D, AffineTransform, createTransformedShape() mais pas de chance.

Ce que j'essaie de faire maintenant est de faire tourner le Rectangle manuellement. J'essaie d'obtenir le rectangle Point (x, y) en utilisant la formule ci-dessous:

double rectX = (Math.cos(Math.toRadians(90)) * (x - anchorX) - Math.sin(Math.toRadians(90)) * (y - anchorY)) + anchorY; 

double rectY = (Math.sin(Math.toRadians(90)) * (x - anchorX) - Math.cos(Math.toRadians(90)) * (y - anchorY)) + anchorY; 

Comment puis-je trouver les valeurs anchorX et anchorY en Java? J'ai essayé de plonger la hauteur de l'image de 2, mais cela ne fonctionne pas pour tous les angles de rotation. Dois-je obtenir la largeur et la hauteur JPanel ou quelque chose? Existe-t-il une formule que Java utilise pour trouver des points d'ancrage?

Répondre

1

Je ne suis pas sûr de l'objectif, mais je vois deux approches alternatives possibles:

  • Utilisez une transformation inverse, comme le montre here.

  • Rendu l'image verticale et le ou les rectangle (s) dans un BufferedImage et faites pivoter l'image composite, comme indiqué here.

1

Si vous essayez de faire comme une boîte qui roule sur le dessus, vous devez trouver le coin inférieur dans le sens du déplacement. Si vous roulez vers la droite, vous avez besoin du coin inférieur droit.

Questions connexes