[ Foro de C# ]

Posicionar imagen según datos de un txt

11-Nov-2013 11:52
rolancito ruiz
10 Respuestas

Hola buenos días

He terminado un proyecto desde el que cargo (modo consola) unas variables tomadas de un txt para determinar la ruta o posición de camiones de alimentos. Todo ok

No obstante, no logro trasladar estos datos a Windows form.

El txt contiene:
56  10 800 300 20 505
45  10 600 100 20 605

En lo que la primera línea son los datos del primer camión. Y la segunda la del siguiente camión. Lo que me interesa es mostrar un icono (o imagen) según las coordenadas de mi archivo de texto, siendo el 56 la velocidad, el 800 el eje de las X, el 300 el eje de las Y

Al parecer he topado con mi límite de conocimientos y me siento incapaz de hacer lo anterior

Alguna ayuda ¿por favor?
Gracias.


11-Nov-2013 12:06
Nacho Cabanes (+83)

Para saber cómo hacerlo, primero tienes que elegir una plataforma. Por ejemplo, ¿será un programa para Windows, usando "ventanitas" de Windows Forms?


11-Nov-2013 12:16
rolancito ruiz

Hola

Gracias por responder. Sí, todo el trabajo lo haré en windows form mediante formularios, será todo visual


11-Nov-2013 13:04
Nacho Cabanes (+83)

La forma de dibujar una imagen en Windows Forms es la siguiente:


void Button2Click(object sender, EventArgs e) 
{ 
  Graphics ventanaGrafica = this.CreateGraphics(); 
  Image imagen = new Bitmap("MiImagen.png");
  ventanaGrafica.DrawImage(imagen,120,100); 
}



(Los dos datos numéricos son las coordenadas en que quieres que aparezca la imagen).


11-Nov-2013 13:42
rolancito ruiz

Hola
Quizás me he explicado mal

Se posicionar cualquier elemento dentro de un form. No es difícil. Y moverlo tampoco

Pero no es lo que he planteado en la pregunta inicial

Mi deseo es mover esa imagen según las coordenadas tomadas de un archivo de texto acorde a mi primer post.

Pd: gracias por atenderme


11-Nov-2013 13:59
Nacho Cabanes (+83)

No entiendo... si sabes leer del fichero de texto, obtener las coordenadas a partir de él, dibujarlo en esas coordenadas y moverlo... ¿qué te falta?

Para intentar ayudarte a ganar tiempo, te doy las pistas de cómo haría yo cada cosa, porque no tengo claro en qué te has quedado atascado:

1.- Leer el fichero de texto, línea a línea, usando un StreamReader
2.- Para cada línea, descomponerla en sus componentes usando "Split"
3.- Calcular el valor numérico de cada componente y guardarlo en las variables auxiliares correspondientes
4.- Dibujar la imagen en el "form", en sus coordenadas iniciales
5.- Crear un "timer" que permita incrementar de forma repetitiva esas coordenadas en la cantidad que indique la velocidad.


11-Nov-2013 15:16
rolancito ruiz

Esto he de hacerlo en C# no desde un proyecto de consola, sino en Windows form:

Tengo un archivo de texto llamado: ?informacion.txt?

Este txt contiene lo siguiente:

56  10 800 300 20 505
45  10 600 100 20 605

La primera línea son los datos del primer camión. Y la segunda la del siguiente camión. Lo que me interesa es mostrar un icono (o imagen) según las coordenadas de posición de mi archivo de texto, siendo el 56 la velocidad, y los de posición: el 800 el eje de las X, el 300 el eje de las Y.

Gracias de nuevo y agradecido estoy por tu interés


11-Nov-2013 19:32
Nacho Cabanes (+83)

De los 5 pasos que te he propuesto antes, ¿cuáles no sabes hacer?


11-Nov-2013 22:21
rolancito ruiz

El 3 y el 4 no sabría hacerlas

el 5 podré lograrlo creo

Gracias por leerme


12-Nov-2013 10:31
Nacho Cabanes (+83)

Parte 2:


string linea = fichero.ReadLine();
string[] fragmentosLinea = linea.Split(' ');


Parte 3:


velocidad = Convert.ToInt32(fragmentosLinea[0]);
x = Convert.ToInt32(fragmentosLinea[1]);
y = Convert.ToInt32(fragmentosLinea[2]);


Parte 4:


Graphics ventanaGrafica = this.CreateGraphics(); 
Image imagen = new Bitmap("camion1.png");
ventanaGrafica.DrawImage(imagen,x,y); 



La parte 5 sería hacer un timer que cada cierto tiempo haga "x+=velocidad", cambie la posición de la imagen y redibuje el formulario.

;-)


12-Nov-2013 13:32
rolancito ruiz

Gracias por el empujón

Pondré manos a la obra

Lo que tenga hecho lo pondré por aquí para que le des un vistazo, si tienes un tiempo libre para mi por supuesto






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)