CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: csrkstro en Miércoles 26 de Mayo de 2010, 08:45
Título: timer y picturebox
Publicado por: csrkstro en Miércoles 26 de Mayo de 2010, 08:45
hola. soy nuevo en c# y necesito hacer una aplicación que me permita mediante un timer cambiar una imagen contenida en un picturebox. les agradeceria que me ayudaran ya que no tengo mucho tiempo.
Título: Re: timer y picturebox
Publicado por: Jeysscarr en Miércoles 26 de Mayo de 2010, 19:40
podrias guardar las imagenes en un vector.. Digamos que tenemos 3 imagenes:
Creas una variable contador inicializada en 0 int cont=0;
y en el evento TImer_Tick pondias algo como esto:
Timer1_Tick() { if(cont==2) { cont=0; //volver a la primera posicion }
picturebox1.image=Imagenes[cont]; cont++; //cambiar el valor del contador para asi poder mostrar la siguiente imagen }
Título: Re: timer y picturebox
Publicado por: csrkstro en Jueves 27 de Mayo de 2010, 05:24
gracias por tu respuesta. encontre otra forma y me resultó.
ahora necesito saber sobre el control imagelist.
Título: Re: timer y picturebox
Publicado por: Jeysscarr en Jueves 27 de Mayo de 2010, 05:31
Es casi lo mismo, lo unico que encapsulado...
todo se hace con el asistente, pero si es por codigo....
-- crear un umagelist: imagelist im=new imagelist(); -- agregar una imagen: im.images.add(TUIMAGEN); -- referenciar una imagen: im.images[posicion o indice]; -- borrar: im.images.removeat(posicion o indice); o im.images.remove(imagen); -- total de imagenes: im.Images.count;
por lo general es usada en controles como el treeview y listview, en estos se busca la propiedad Imagelist y se selecciona el control o por codigo:
Listview1.SmallIMageList=imagelist1;
puedes hacer algo como esto: Image miImagen=imagelist1.images[0]; o picturebox1.image=imagelist1.images[0];
Título: Re: timer y picturebox
Publicado por: csrkstro en Jueves 27 de Mayo de 2010, 05:47
gracias es lo que necesitaba.
ahora tambien tengo un problema, te explico.
necesito hacer un servicio de llamadas(teléfonicas) de la siguiente manera:
• El usuario va ingresando nombres de persona que se van ir agregando a una cola de espera de llamadas. Para ello debe de investigar cómo manejar la estructura ArrayList, la cual le va a facilitar el manejo de ingresar y sacar elementos de la cola de espera, sin tener redimensionar el tamaño del mismo. • Para el iniciar el proceso de atención el usuario oprime el botón de Iniciar. Esto dará como resultado que se comience a dar la atención de las llamadas en espera. Cuando se oprima este botón se inhabilita ya que el proceso arranca pero no se puede parar. Esto quiere decir que se pueden ir agregando más llamadas a la cola de espera sin detener el proceso una vez que este haya dado inicio. La lógica que debe de ejecutar para saber cual llamada atender es la siguiente: El proceso correrá cada 5 segundos y verificara cual de los operadores esta libre en ese momento. Los operadores serán los botones que dicen Liberar. Si el proceso encuentra operadores libres le asigna una llamada, la cual será poner el nombre de la persona que está en espera en los labels que dicen Nombre Persona e inmediatamente eliminar esa persona de la estructura del ArrayList. La función del botón Liberar será cambiar el estado del operador a libre, para que cuando el proceso vuelva a correr sepa que ese operador puede atender a una persona en espera. Para ejecutar el proceso apóyese en un control Timer. Este tiene la capacidad de definirle cada cuanto tiempo él se puede ejecutar. Recuerde codificar la lógica dentro del evento Tick del control. Investigue el uso de dicho control. Recuerde ingresar en la sección de using de la pantalla la siguiente referencia: using System.Collections;
esto es el enunciado de lo que debo hacer, ingreso los nombres de personas con un textbox. tengo 3 labels y 3 botones para cada uno, cuando le doy iniciar en los labels me tienen que aparecer los nombres de las primeras 3 personas y a medida que voy liberando, voy vaciando la cola.
se que esta largo pero es lo último que me queda por hecer, me interesa mas aprender de los arreglos. gracias
Título: Re: timer y picturebox
Publicado por: Jeysscarr en Jueves 27 de Mayo de 2010, 05:57
Todo en .Net son arreglos, si vas a agregar algo a un control cuando presionas punto siempre haces algo como:
LoQueSea.Add(lo_que_quiero_agregar);
System.Collections.Generic; es el namespace para crear arrays, matrices, arreglos...
Es claro que es una tarea pero puedo indicarte mas o menos la logica, create una clase que herede de ArrayList asi:
Código: C#
usingSystem.Collections.Generic;
Class TUCLASE:ArrayList
{
Publicstring Nombre;
}
... asi cuando vayas a agregar un elemento no tienes que redimensionar nada... es decir no vas a crear un vector de esta forma: Vector[tamaño] sino que vas a crear una coleccion de elementos, en este caso nombres:
TUCLASE Clientes=new TUCLASE(); para agregar uno nuevo:
Clientes.Add(Nombre);
para borrarlo:
Clientes.Remove(Nombre);
ya lo de habilitar o inhabilitar los botones es sencillo...
crea una variable con un valor por ejemplo 1 para cuando el servicio si inicio y 0 para cuando esta parado entonces cuando pulses el boton debes preguntar:
if(variable==0){iniciarproceso;inhabilitarBoton;variable=1; //para que los demas controles sepan que esta corriendo el proceso}
Título: Re: timer y picturebox
Publicado por: csrkstro en Jueves 27 de Mayo de 2010, 06:19
entendido.
gracias........
Título: Re: timer y picturebox
Publicado por: csrkstro en Jueves 27 de Mayo de 2010, 06:53
como hago para asignarle al label el valor siguiente en la cola?
Título: Re: timer y picturebox
Publicado por: Jeysscarr en Jueves 27 de Mayo de 2010, 17:11
con un contador que vaya aumentando cada 5 segundos en el timer, harias algo como: TUARRAYLIST[cont]
Título: Re: timer y picturebox
Publicado por: csrkstro en Viernes 28 de Mayo de 2010, 04:40
if (libe1 == 0) { lbl_persona1.Text = Convert.ToString(clientes[0]);// se supone que aqui le asigno al label el primer dato del arreylist libe1 = 1; } if (libe2 == 0) { lbl_persona2.Text = Convert.ToString(clientes[0]); libe2 = 1; } if (libe3 == 0) { lbl_persona3.Text = Convert.ToString(clientes[0]); libe3 = 1; } }
el problema es que no le asigno al label el dato y me da un error
Título: Re: timer y picturebox
Publicado por: Jeysscarr en Viernes 28 de Mayo de 2010, 04:43
prueba con esto: si es que en tu caso la clase clientes tiene un campo publico llamado Nombre, sino lo tiene, deberia tenerlo