Rodar Imagem

0 respostas
G

Olá,
eu estou desenvolvendo uma projeto para a faculdade, que é uma “cópia” deste jogo -> http://www.fulano.com.br/Scripts/JogosOnline/Letroca/LeTrocaAbertura.asp
porém estou com um problema, minha intenção é fazer com que, ao clicar na imagem, a minha imagem gira, e mude de posição, para encaixar em outro painel. Porém, ao girar a imagem, o painel, ou sei lá o que, está cortando minha imagem.
Um código parecido com o que estou utilizando é este

package Teste;

import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.io.*; 
import javax.imageio.ImageIO;
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.AffineTransform;
       
public class imageTeste extends JComponent
{
	  JFrame frame;     
      JPanel panel;
      static File imgStream = new File("resources\\snowboard_evolution.jpg");
	  static BufferedImage image;
	  static Timer contador;     
	  static double valor;
           
      imageTeste() 
      {     
	      frame = new JFrame("Game");     
	      panel = new JPanel();
	      panel.setSize(1024, 768);
	     // panel.setBounds(0, 0, 1024, 768);

	      final double anterior = Math.toRadians(15);
	           
	      //panel.setLayout(null);
	      frame.setLayout(null);
	      //panel.setBackground(Color.ORANGE);
	      this.setBounds(0, 0, image.getWidth() * 2, image.getHeight() * 2);
	      this.setSize(image.getWidth(), image.getHeight());
	      this.setLocation(500,500);
	      //panel.add(this);
	      //panel.setVisible(true);
	      //panel.setLocation(500, 500);
	      frame.add(this);
	      
	      //frame.getContentPane().add(panel);     
	      frame.setVisible(true);     
	      frame.setSize(1440, 900);
	      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	      
	      contador = new Timer(50, new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				valor += anterior;		
				repaint();
			}
		});
	      contador.start();
      }     
     
      public void paintComponent(Graphics g){
		  Point left  = new Point( 45,50);
		  Point right = new Point(240,50);
    	  AffineTransform at = AffineTransform.getRotateInstance(left.x,left.y);
		  Graphics2D g2 = (Graphics2D) g;
		  double x = image.getWidth()/2, y = image.getHeight()/2; 
		  at.rotate(valor, x, y);
		  //g2.drawImage(image, 0,0, panel);
		  g2.drawImage(image, at, panel);
		  //System.out.println("Mostrando imagem");
      } 
       
      public static void main(String[] args) {
    	  try
    	  {
    		  image = ImageIO.read(imgStream);
    	  }
    	  catch(Exception e)
    	  {
    		  e.printStackTrace();
    	  }
          new imageTeste();
      }
}

Se alguém poder me ajudar a fazer um efeito parecido, ou o mesmo (que eu acho meio difícil) do LeTroca, seria muito bom.
Mas, em suma, minha dúvida é, como girar a imagem e fazer com que ela “encaixe” em outro JPanel, sem que o painel corte ela.
Obrigado

Criado 29 de setembro de 2010
Respostas 0
Participantes 1