Rotacao java2D

Pessoal, to com um problema que não estou conseguindo resolver. Eu tenho algumas imagens criadas com com graphics2D e estou precisando fazer uma rotação. O método rotate gira toda a tela, mas preciso girar apenas uma imagem isolada dentre várias imagens. me falaram em que eu poderia usar o affineTransforme, mas não encontrei muitas coisas a respeito, somente consegui espelhar a imagem com este método. Segue o código, neste exemplo tenho dois triângulos e quero girar um, se alguém poder me ajudar fico muito grato… vlww

[code]import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;

public class FormasGeometricas extends Canvas{
int[] x = {50,75,25};
int[] y = {0,50,50};

public FormasGeometricas(){
	setSize(200, 150);
	setBackground(Color.GRAY);
}

public void paint (Graphics g){
	Graphics2D g2 =(Graphics2D) g;

	GeneralPath triangulo= new GeneralPath();
	triangulo.moveTo(x[0], y[0]);
	for (int i = 0; i < x.length; i++) {
		triangulo.lineTo(x[i], y[i]);
	}
	triangulo.closePath();
	g2.setColor(Color.GREEN);
	g2.fill(triangulo);
	
	for (int i = 0; i < y.length; i++) {
		x[i]+=150;
		y[i]+=150;
	}
	
	
	GeneralPath triangulo2 = new GeneralPath();
	triangulo2.moveTo(x[0], y[0]);
	for (int i = 0; i < x.length; i++) {
		triangulo2.lineTo(x[i], y[i]);
	}
	for (int i = 0; i < x.length; i++) {
		triangulo2.lineTo(x[i], y[i]);
	}
	triangulo2.closePath();
	g2.setColor(Color.GREEN);
	g2.fill(triangulo2);
	

}

}[/code]

O método create() e dispose() permitem salvar o estado do desenho (transforms) e retornar ao ponto original, mas mesmo salvando o estado antes do rotate, no segundo desenho o primeiro também será movido. No seu caso, o ideal é girar o Path ou desenhar em um Graphics temporario e depois desenha-lo na tela.

É exatamente isto que queria Marky, girar o Path, mas esta sua idéia de criar um temporário é boa tbm… quero determinar determinadas rotações, como por exemplo 90º ao clicar com o mouse… Será que teria como mudar as coordenadas dos pontos e desenhas um novo Path?

Applicar um AffineTrasnform no transform do Path não resolve?

Você pode fazer o rotate, desde que use o Graphics2D como ele foi feito para ser usado:

public void paint (Graphics g){ Graphics2d g2d = (Graphics2D) g.create(); //Aqui vc gira o canvas g2d.dispose(); }

No caso do seu código, pode ser necessário fazer 2 create() e 2 dispose(). Mas o ideal é compreender melhor como funcionam matrizes de transformação. Assim vc desenha suas imagens centralizadas no (0,0) e usa o AffineTransform para girar e posicionar:
http://www.pontov.com.br/site/arquitetura/54-matematica-e-fisica/238-matrizes-e-transformacoes-parte-1
http://pontov.com.br/site/arquitetura/54-matematica-e-fisica/267-matrizes-e-transformacoes-parte-2