• Viernes 1 de Noviembre de 2024, 13:27

Autor Tema:  timer y picturebox  (Leído 11751 veces)

csrkstro

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
timer y picturebox
« en: Miércoles 26 de Mayo de 2010, 08:45 »
0
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.

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: timer y picturebox
« Respuesta #1 en: Miércoles 26 de Mayo de 2010, 19:40 »
0
podrias guardar las imagenes en un vector..
Digamos que tenemos 3 imagenes:

Image Imagenes[2];
Imagenes[0]=new Image(rutaIMagen);
Imagenes[1]=new Image(rutaIMagen);
Imagenes[2]=new Image(rutaIMagen);

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
}
Nuestro poder está creciendo mas rápido que nuestra sabiduria

csrkstro

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: timer y picturebox
« Respuesta #2 en: Jueves 27 de Mayo de 2010, 05:24 »
0
gracias por tu respuesta.
encontre otra forma y me resultó.

ahora necesito saber sobre el control imagelist.

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: timer y picturebox
« Respuesta #3 en: Jueves 27 de Mayo de 2010, 05:31 »
0
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];
Nuestro poder está creciendo mas rápido que nuestra sabiduria

csrkstro

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: timer y picturebox
« Respuesta #4 en: Jueves 27 de Mayo de 2010, 05:47 »
0
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

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: timer y picturebox
« Respuesta #5 en: Jueves 27 de Mayo de 2010, 05:57 »
0
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#
  1. using System.Collections.Generic;
  2.  
  3. Class TUCLASE:ArrayList
  4. {
  5.          Public string Nombre;
  6. }
  7.  

... 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}
Nuestro poder está creciendo mas rápido que nuestra sabiduria

csrkstro

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: timer y picturebox
« Respuesta #6 en: Jueves 27 de Mayo de 2010, 06:19 »
0
entendido.

gracias........

csrkstro

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: timer y picturebox
« Respuesta #7 en: Jueves 27 de Mayo de 2010, 06:53 »
0
como hago para asignarle al label el valor siguiente en la cola?

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: timer y picturebox
« Respuesta #8 en: Jueves 27 de Mayo de 2010, 17:11 »
0
con un contador que vaya aumentando cada 5 segundos en el timer, harias algo como: TUARRAYLIST[cont]
Nuestro poder está creciendo mas rápido que nuestra sabiduria

csrkstro

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: timer y picturebox
« Respuesta #9 en: Viernes 28 de Mayo de 2010, 04:40 »
0
esto es lo que hice:

private void btn_ingresar_persona_Click(object sender, EventArgs e)
        {
            llamadas clientes = new llamadas();

            if (txt_nombre.Text == "")
            {
                MessageBox.Show("Debe ingresar un nombre", "Validación de datos", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txt_nombre.Focus();
                return;
            }

            clientes.Add(txt_nombre.Text); //aqui agrego nombres al arreylist
            txt_nombre.Clear();
            txt_nombre.Focus();
           
        }

        private void btn_iniciar_llamada_Click(object sender, EventArgs e)
        {

            btn_iniciar_llamada.Enabled = false;

            timer_llamadas.Interval = 1000;
            timer_llamadas.Enabled = true;
            timer_llamadas.Tick += new System.EventHandler(client); //aqui llamo al evento client
           
        }
        private void client(object sender, EventArgs e)
        {
            int libe1 = 0, libe2 = 0, libe3 = 0;
            llamadas clientes = new llamadas();

            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

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: timer y picturebox
« Respuesta #10 en: Viernes 28 de Mayo de 2010, 04:43 »
0
prueba con esto:
si es que en tu caso la clase clientes tiene un campo publico llamado Nombre, sino lo tiene, deberia tenerlo

Código: C#
  1. if (libe1 == 0)
  2. {
  3.              lbl_persona1.Text = Convert.ToString(clientes[0].Nombre);
  4.              libe1 = 1;
  5. }
  6.  
Nuestro poder está creciendo mas rápido que nuestra sabiduria

Jeysscarr

  • Miembro MUY activo
  • ***
  • Mensajes: 134
  • Nacionalidad: co
    • Ver Perfil
Re: timer y picturebox
« Respuesta #11 en: Viernes 28 de Mayo de 2010, 04:44 »
0
te dejo mi msn, estoy en linea: jeyssoncarrero@hotmail.com
a ver que en que te puedo ayudar
Nuestro poder está creciendo mas rápido que nuestra sabiduria