Rotation de l'Image avec AffineTransform

J'ai la classe appelée Airplane. À l'intérieur de cette classe, j'ai eu la variable img qui est un BufferedImage type. Qu'est-ce que plus j'ai de la classe WorldMap qui remplace la fonction paintComponent(Graphics g):

@Override
public void paintComponent(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    g2d.drawImage(mapa, 0, 0, getWidth(), getHeight(), null); 
    drawAirplanes(g2d);
}

Fonction drawAirplanes() ressembler à ceci:

private void drawAirplane(Graphics2D g){
    for(Samolot i: s){
        i.rotateAirplane();
        g.drawImage(i.getImg(),i.getX(),i.getY(),(int)i.getDim().getWidth(),(int)i.getDim().getHeight(),  null);
    }
}

Il suffit de 1) faire tourner l'avion (BufferedImage à l'intérieur de l'Avion objet) 2) tracer lui.

Mon Avion.rotateAirplane() la fonction ressemble à ceci:

 public void rotateSamolot() {
   AffineTransform tx = new AffineTransform();

   tx.translate(10,10); //10, 10 is height and width of img divide by 2
   tx.rotate(Math.PI / 2);
   tx.translate(-10,-10); 

   AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);

   BufferedImage newImage =new BufferedImage(20, 20, img.getType()); //20, 20 is a height and width of img ofc
   op.filter(img, newImage);

       this.img = newImage;
 }

ofc quand im l'exécution de mon programme mapa objet est dessiné. quand im la suppression de cette voie

this.img = newImage;

j'ai eu l'ofc mon avion aussi, mais pas en rotation.

Je ne suis pas sûr que vous voulez traduire le AffineTransform, vous devez, au lieu de cela, l'approvisionnement de la rotation des points avec la rotation de la méthode, qui est en général le centre point, mais c'est à vous de voir. Je voudrais également de ne pas affecter le résultat de la rotation arrière pour le maître de l'image sinon vous en aggravant la rotation....
Je "pense" fondamentalement, ce qui est arriver, c'est votre image est pivotée "hors limites" de l'espace disponible...
Vous pouvez prendre un coup d'oeil à cet exemple
j'ai oublié d'enregistrer un original de l'image - c'est vrai. mais ne comprennent pas encore comment je peux corriger mon code pour ne pas le tourner en dehors des limites de mon espace. des idées? l'ofc je vais jeter un oeil sur ce lien, en quelques sec
15 questions posées. Pas une seule réponse acceptée. Manifestement, vous n'avez pas apprécié l'aide que vous obtenez sur les questions, donc je pense que je vais sauter cette.

OriginalL'auteur fa1thly | 2013-11-28