Rotacionar Rectangle2D - Posição "Losango"

4 respostas
viniciusmayer

Olá Srs,

Estou envolvido com o desenvolvimento de um aplicativo “científico”, a estilo de um editor de UML, e estou com uma dúvida “cruel”!!! :slight_smile:

“Como faço para desenhar um ‘Losango2D’?”

Eu uso hoje, na maioria das figuras que eu desenho, o Rectangle2D… Consegui resolver todos os “problemas maiores” com este cara, e agora me resta desenhar um losango. A idéia seria “rotacionar” este Rectangle2D e tals, mas não tô conseguindo! Como que eu faço para rotacionar o Rectangle2D? Eu não entendi o JavaDoc do Rectangle2D que diz como fazer isso…

Grato,
E. Vinicius D. Mayer

4 Respostas

ciczan

Cara, faz um tempinho que mexi com Java2D. Mas se não me engano você pode aplicar uma rotação na base (origem), desenhar um retângulo e depois “desrotacionar”.

viniciusmayer

public void draw(Graphics2D g2) { super.draw(g2); Rectangle2D rectangle = new Rectangle2D.Double(getBounds().getX(), getBounds().getY(), getBounds().getWidth(), getBounds().getHeight()); g2.draw(rectangle); }

Bueno, este aí é o cara que eu uso para desenhar o meu Rectangle2D!!! Então, de acordo com a tua resposta, ciczan, eu deveria aplicar uma rotação no meu Graphics2D?!?! Eu não entendi muito bem o que você quiz dizer, você poderia me explicar, com base neste código que disponibilizei?

Fico desde já grato,
E. Vinicius D. Mayer

ciczan

Não to podendo testar agora, mas acho que é assim:

public void draw(Graphics2D g2) {
       super.draw(g2);
       g2.rotate(Math.PI/4);
       Rectangle2D rectangle = new Rectangle2D.Double(getBounds().getX(), getBounds().getY(), getBounds().getWidth(), getBounds().getHeight());
       g2.draw(rectangle);
       g2.rotate(-1*Math.PI/4);
    }

Só avise se der certo ou errado.

viniciusmayer

Perfeito!

Muito obrigado, ciczan, pela ajuda!

Att,
E. Vinicius D. Mayer

Criado 19 de maio de 2006
Ultima resposta 19 de mai. de 2006
Respostas 4
Participantes 2