Olá! Estou tentando rotacionar uma imagem em um panel. Achei que era só criar uma opção de rotação antes do drawImage, mas ele acaba girando tudo!
Como que eu faço para rotacionar só a imagem?
Aqui está uma pequena parte do código, com a mudança do angulo e dando drawImage:
//g2 é um Graphics 2D//canhao é a imagemg2.translate(445/2-10,505);g2.rotate(angulo.getValue());g2.translate(-(445/2-10),-505);g2.drawImage(canhao,445/2-40,434,this);
Outra pergunta rapidão!!!
Em que escala está o rotate?
2pi = 1 rotação?
V
ViniGodoy
Está em radianos, como todas as funções do Math.
2pi = 360º
Lembre-se. Esses métodos afetam o sistema de coordenadas, não a imagem.
Ou seja, quando vc dá um rotate, vc está rodando o eixo x e y. Por consequencia, tudo que é desenhado sobre esse eixo, será rotacionado também. O mesmo vale para os métodos translate, shear e scale.
Leia o artigo do pacman que vc vai entender melhor.
B
Blackbeard
Eu estou com um problema nesse mesmo negocio.
Fiz o codigo no mesmo estilo e não desenha.
int Meiox = img.getWidth()/2;
int Meioy = img.getHeight()/2;
// dbg é Graphics2D tambem
Graphics2D dbg2 = (Graphics2D) dbg.create();
dbg2.translate(Meiox, Meioy);
dbg2.rotate(currentAngle, Meiox,Meioy);
dbg2.translate(Meiox, Meioy);
dbg2.drawImage(img, (int)X-mapx, (int)Y-mapy, (ImageObserver) this);
dbg2.dispose();
Alguem pode me ajudar? Fiz a mesma coisa e não desenha a imagem que quero. Comigo não funcionou, o que pode ser?
B
Blackbeard
Ah… nem precisa mais, consegui resolver o problema…