In una sottoclasse di un JPanel
sto facendo questo:Java testo ruotato ha invertito sequenziano
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.rotate(Math.toRadians(90.));
g2d.drawString(aString, 40, -40);
}
Le lettere vengono ruotati in modo corretto, ma il secondo non si trova nella posizione prevista sotto la prima (al suo a destra, nello spazio ruotato), ma è sopra di esso (alla sua sinistra), il terzo è sopra (a sinistra di) il secondo, ecc. Cambiando l'angolo di rotazione a 45 gradi, ogni personaggio viene ruotato di 45 gradi cw, come previsto, ma la fila di caratteri viene ruotata di 45 gradi ccw, il che è coerente con entrambe le rotazioni essendo a metà strada verso il risultato per 90 gradi.
A 0 gradi di rotazione il testo viene visualizzato correttamente.
Sto sviluppando con NetBeans 7.1.2 su Mac OS X 10.8.2. La stessa versione di NetBeans su Win 7 SP1 non presenta il problema.
Cosa potrebbe causare questo?
La tela grafico viene ruotato. Potresti chiamare drawString prima di ruotare. –
Quindi non si allineano correttamente. –
Il fatto che funzioni in Windows suggerisce un bug in OS X Java. Se si esegue la demo Java2D e si visualizza la scheda Transforms, vengono visualizzati problemi simili? (Java2D è nella demo/jfc/Java2D del pacchetto JDK "demo e campioni", scaricabile separatamente, disponibile all'indirizzo http://www.oracle.com/technetwork/java/javase/downloads/.) – VGR