Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Cambiar el origen de coordenadas 0,0 en zona inferior izquierda

Estas en el tema de Cambiar el origen de coordenadas 0,0 en zona inferior izquierda en el foro de Java en Foros del Web. Con que instrucción en Java podría cambiar el origen de coordenadas para que pasara a ser en la parte inferior-izquierda de la pantalla en vez ...
  #1 (permalink)  
Antiguo 12/08/2014, 10:20
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 11 meses
Puntos: 1
Cambiar el origen de coordenadas 0,0 en zona inferior izquierda

Con que instrucción en Java podría cambiar el origen de coordenadas para que pasara a ser en la parte inferior-izquierda de la pantalla en vez de la parte superior-izquierda.

He probado con Translate() pero no es suficiente porque la coordenada "y" además debe incrementarse de abajo hacia arriba y no de arriba hacia abajo como lo hace cuando el origen esta en la parte superior-izquierda.
  #2 (permalink)  
Antiguo 12/08/2014, 10:30
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Cambiar el origen de coordenadas 0,0 en zona inferior izquierda

Hola:

Hay que hacer un translate() y un scale() diciéndole a la y que se escale con un número negativo (-1 por ejemplo), así iría al revés. Desgraciadamente, Graphics no tiene scale(), así que tienes dos (o tres) opciones

* Hacer las cuentas a mano, transformando coordenadas antes de pintarlo. Aunque está en C/C++, aquí tienes esas cuentas http://www.chuidiang.com/clinux/x11/...oordenadas.php

* Puedes usar la clase AffineTransform de java para echar esas cuentas, aquí tienes como http://www.chuidiang.com/java/graficos/seno/seno.php

* Puedes meter ese AffineTransform en el Graphics para que se haga automáticamente, pero el código tiene que ser algo así de raro, ya que Graphics no tiene método para ponerle la AffineTransform, pero el graphics que te pasan en realidad es un Graphics2D que sí lo tiene, así que hay que hacer un cast.

Código Java:
Ver original
  1. public paint (Graphics g) {
  2.     ((Graphics2D)g).setTransform (tuAffineTransform);
  3.     g.draw(.....);   // Aquí ya puedes usar coordenadas de tu sistema de referencia en vez de pixels.
  4. }

De todas formas si haces el cast a Graphics2D, ese sí tiene método scale()

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 12/08/2014, 13:28
Avatar de loganbdn  
Fecha de Ingreso: enero-2009
Ubicación: Badalona
Mensajes: 114
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Cambiar el origen de coordenadas 0,0 en zona inferior izquierda

De momento me sirve esta manera pero sin translate ni scale.

Simplemente a cada coordenada "y" que voy a dibujar le hago pasar por esta suma:

y=Resy-y

Donde "Resy" es la resolución del alto de la pantalla por ejemplo 400 y la "y" es la coordenada.

Asi por ejemplo si la "y" es 0 me dibujara el punto en la zona inferior (x,400-0) izquierda de la pantalla.

Las otras maneras de implementarlo me resulta mas complicado. ¿ Hay algún ejemplo mas sencillo?

Etiquetas: coordenadas, izquierda, origen
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:42.