Dibujar texto y rotar.

Iniciado por NetJava, 16 Febrero 2011, 12:18 PM

0 Miembros y 1 Visitante están viendo este tema.

NetJava

Buenas,

Estoy preguntando en foro después de buscar en google, jejejeje no es por abusar.

Estoy haciendo una aplicación que genera una gráfica al introducir las variables que el usuario desee, es para aprender. Bueno la cuestión es que se ponen los títulos del eje de ordenadas y el eje de abcisas, utilizo "g2D.drawString(String texto, int x, int y)", "g2D" pertenece a la clase "Graphics2D".  Utilizar eso tal cual no genera problemas, pero cuando quiero poner el titulo en el eje de ordenadas utilizo también las instrucciones "g2D.translate(10, 300);" y "g2D.rotate(-Math.PI/2.0)", lo que hace que el texto rote y se ponga en vertical. Hasta aquí todo bien, pero el problema esta en si vuelvo a utilizar "g2D.drawString(String texto, int x, int y)", ya que los valores modificados en "g2D.translate(10, 300);" y "g2D.rotate(-Math.PI/2.0)" se siguen manteniendo hasta que por ejemplo "g2D = null;". Bueno pues mi pregunta es si sabéis como devolver a los valores por defecto de los métodos "translate" y "rotate" sin poner "g2D = null"  :-\.

Muchas gracias y saludos!!!

egyware

Hola, veo que este tema es algo antiguo espero que no se enoje ningun mod.
El tema es que las transformaciones aplicadas persisten en cada loop del programa lo que te recomiendo que despues de pintar establescas la transformacion identidad.
No recuerdo bien las funciones (deberia revisar la documentacion y ahora me da flojera) pero es la clase AffineTranform y g2d.setTransform.
Bueno te lo dejo como tarea que averigues bien las tranformaciones.
Saludos!!

NetJava

Buenas,

Pues la verdad esq no conseguí solucionar el problema de raíz. Si "parchee guarramente" un poco para poder seguir con la aplica. Pero desde luego me interesa solucionarlo así que me pondré a investigar lo que me has puesto, y cuando lo encuentre lo pongo, por si a alguien le interesa en algún momento.

Un saludo y gracias!!!

ketepi

Hola, no se si te servirá y lo mismo la repuesta llega tarde pero ahi va.

En un programa que he hecho lo que hago es guardar la transformación original:

AffineTransform origXform = g2d.getTransform();
AffineTransform newXform = (AffineTransform)(origXform.clone());

Aplico las transformaciones necesarias y escribo el texto rotado:

newXform.rotate(Math.toRadians(270), xRot, yRot);
g2d.setTransform(newXform);
g2d.drawString("Mi texto",x,y);


Y finalmente vuelvo a poner la transformación original:

g2d.setTransform(origXform);


Espero que te sirva, suerte!

NetJava

Buenas,
Muchas gracias, el problema lo solucione con el típico parche guarro, pero que se adaptaba más al proyecto. De todas formas me he hecho un ejemplo con tu código para tenerlo a mano cuando lo necesite de nuevo XD. Muchas gracias!