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