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

Problema dibujando

Estas en el tema de Problema dibujando en el foro de Java en Foros del Web. Hola, Estoy haciendo un programa que lea un fichero de texto y represente los valores en un gráfico de barras, pero resulta que me dibuja ...
  #1 (permalink)  
Antiguo 25/01/2006, 13:21
 
Fecha de Ingreso: enero-2002
Ubicación: Graná
Mensajes: 646
Antigüedad: 22 años, 4 meses
Puntos: 0
Problema dibujando

Hola, Estoy haciendo un programa que lea un fichero de texto y represente los valores en un gráfico de barras, pero resulta que me dibuja hacia abajo, ya que toma como coordenadas 0,0 arriba a la izquierda. He intentado cambiarlo con g.translate(0,250), pero no va. ¿Cómo podría hacerlo? Gracias y un saludo

for (i=0; i<num_valores; i++){
valores[i]=Float.parseFloat (aux[i]);
altura=(int) valores[i];

pos_x=(anchura+separacion)*(i+1);

//Dibujo el borde y el valor encima
g.setColor (Color.black);
g.drawRect(pos_x-1, pos_y-1, anchura+1, altura+1);
g.drawString(""+valores[i]+"", pos_x, pos_y-5);

//color del rectángulo
g.setColor(colores[i]);

// Rectángulo relleno
g.fillRect(pos_x, pos_y, anchura, altura);
}
  #2 (permalink)  
Antiguo 26/01/2006, 08:19
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 18 años, 6 meses
Puntos: 7
Hola aviana:

Es posible que tenga solución usando métodos de Java, pero a mí solo se me ocurre una solución matemática. Tienes que hacer un corrimiento virtual, por decirlo de alguna manera en los ejes coordenados. Suponiendo que estés dibujando sobre un panel y luego que le pidas el Graphics al panel. Evidentemente siempre el (0,0) estará en la esquina superior izquierda, pero te voy a dar un algoritmo matemático que te colocará, virtualmente, el (0,0) en el centro de tu panel. Te propongo esto:

nuevaX = ((xAnchoPanel + 1) / 2) - x;
nuevaY = ((yLargoPanel + 1) / 2) - yLargoPanel + y;

Donde xAnchoPanel y yLargoPanel serían el ancho y el largo del panel respectivamente, x e y serían las x y las y que quieres que se muevan, y nuevaX y nuevaY son los valores con los que debes trabajar, o sea, los valores virtuales. Esto funcionaría colocando exactamente el origen de coordenadas en el centro si las dimensiones del panel fueran impares ambas, de lo contrario quedaría un píxel fuera de lugar. Esto es perfectamente cuestionable y no lo he probado en Java, solo en papel.

Espero que te pueda ayudar.
__________________
El último TipdaR
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 03:06.