Foro de elhacker.net

Programación => Java => Mensaje iniciado por: NetJava en 16 Febrero 2011, 12:18 pm



Título: Dibujar texto y rotar.
Publicado por: NetJava en 16 Febrero 2011, 12:18 pm
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!!!


Título: Re: Dibujar texto y rotar.
Publicado por: egyware en 7 Marzo 2011, 05:13 am
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!!


Título: Re: Dibujar texto y rotar.
Publicado por: NetJava en 7 Marzo 2011, 12:10 pm
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!!!


Título: Re: Dibujar texto y rotar.
Publicado por: ketepi en 17 Mayo 2011, 15:47 pm
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:
Código:
AffineTransform origXform = g2d.getTransform();
AffineTransform newXform = (AffineTransform)(origXform.clone());
Aplico las transformaciones necesarias y escribo el texto rotado:
Código:
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:
Código:
g2d.setTransform(origXform);

Espero que te sirva, suerte!


Título: Re: Dibujar texto y rotar.
Publicado por: NetJava en 17 Mayo 2011, 20:00 pm
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!