Problemi con i timer su una serie di immagini in movimento

di il
7 risposte

Problemi con i timer su una serie di immagini in movimento

Scusate sono solo all'inizio vi volevo sottoporvi questo problema, ho creato con photoshop delle immagini i sequenza sono 8 più una fissa di sfondo, le immagini le ho inserite nelle pictureBox, ed ho inserito 8 timer ognuno con intervallo diverso come mostrato nel codice, il programma così come realizzato da me funziona (sicuramente si poteva realizzare in altri modi e snellire il codice anche di parecchio) ma è giusto per capire il problema in questo caso, quando parte il programma la sequenza delle immagini fino a mostrare un movimento continuo funziona per tutto il ciclo delle otto immagini, ma poi si ferma e per ripartire aspetta circa qualche secondo, mentre io volevo ripartisse con lo stesso intervallo che si sono susseguite le otto immagini.
Praticamente vorrei che queste 8 immagini inserite nelle pictureBox che rappresentano un pallino rosso che gira in un cerchio giallo, girasse sempre senza fermarsi e non come fa attualmente.
Questo è il codice in c#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

timer2.Start();
timer3.Start();
timer4.Start();
timer5.Start();
timer6.Start();
timer7.Start();
timer8.Start();
timer9.Start();

}



private void timer2_Tick(object sender, EventArgs e)
{
if (pictureBox2.Visible == true)
{

pictureBox2.Visible = false;
pictureBox3.Visible = true;
pictureBox4.Visible = true;
pictureBox5.Visible = true;
pictureBox6.Visible = true;
pictureBox7.Visible = true;
pictureBox8.Visible = true;
pictureBox9.Visible = true;

}
else if (pictureBox2.Visible == false)
{

pictureBox2.Visible = true;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
pictureBox5.Visible = false;
pictureBox6.Visible = false;
pictureBox7.Visible = false;
pictureBox8.Visible = false;
pictureBox9.Visible = false;

}

}

private void timer3_Tick(object sender, EventArgs e)
{
if (pictureBox3.Visible == true)
{

pictureBox2.Visible = true;
pictureBox3.Visible = false;
pictureBox4.Visible = true;
pictureBox5.Visible = true;
pictureBox6.Visible = true;
pictureBox7.Visible = true;
pictureBox8.Visible = true;
pictureBox9.Visible = true;

}
else if (pictureBox3.Visible == false)
{

pictureBox2.Visible = false;
pictureBox3.Visible = true;
pictureBox4.Visible = false;
pictureBox5.Visible = false;
pictureBox6.Visible = false;
pictureBox7.Visible = false;
pictureBox8.Visible = false;
pictureBox9.Visible = false;

}

}

private void timer4_Tick(object sender, EventArgs e)
{
if (pictureBox4.Visible == true)
{


pictureBox2.Visible = true;
pictureBox3.Visible = true;
pictureBox4.Visible = false;
pictureBox5.Visible = true;
pictureBox6.Visible = true;
pictureBox7.Visible = true;
pictureBox8.Visible = true;
pictureBox9.Visible = true;
}
else if (pictureBox4.Visible == false)
{

pictureBox2.Visible = false;
pictureBox3.Visible = false;
pictureBox4.Visible = true;
pictureBox5.Visible = false;
pictureBox6.Visible = false;
pictureBox7.Visible = false;
pictureBox8.Visible = false;
pictureBox9.Visible = false;

}

}

private void timer5_Tick(object sender, EventArgs e)
{
if (pictureBox5.Visible == true)
{

pictureBox2.Visible = true;
pictureBox3.Visible = true;
pictureBox4.Visible = true;
pictureBox5.Visible = false;
pictureBox6.Visible = true;
pictureBox7.Visible = true;
pictureBox8.Visible = true;
pictureBox9.Visible = true;

}
else if (pictureBox5.Visible == false)
{

pictureBox2.Visible = false;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
pictureBox5.Visible = true;
pictureBox6.Visible = false;
pictureBox7.Visible = false;
pictureBox8.Visible = false;
pictureBox9.Visible = false;

}

}

private void timer6_Tick(object sender, EventArgs e)
{
if (pictureBox6.Visible == true)
{

pictureBox2.Visible = true;
pictureBox3.Visible = true;
pictureBox4.Visible = true;
pictureBox5.Visible = true;
pictureBox6.Visible = false;
pictureBox7.Visible = true;
pictureBox8.Visible = true;
pictureBox9.Visible = true;

}
else if (pictureBox6.Visible == false)
{

pictureBox2.Visible = false;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
pictureBox5.Visible = false;
pictureBox6.Visible = true;
pictureBox7.Visible = false;
pictureBox8.Visible = false;
pictureBox9.Visible = false;

}

}

private void timer7_Tick(object sender, EventArgs e)
{
if (pictureBox7.Visible == true)
{

pictureBox2.Visible = true;
pictureBox3.Visible = true;
pictureBox4.Visible = true;
pictureBox5.Visible = true;
pictureBox6.Visible = true;
pictureBox7.Visible = false;
pictureBox8.Visible = true;
pictureBox9.Visible = true;

}
else if (pictureBox7.Visible == false)
{

pictureBox2.Visible = false;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
pictureBox5.Visible = false;
pictureBox6.Visible = false;
pictureBox7.Visible = true;
pictureBox8.Visible = false;
pictureBox9.Visible = false;

}

}

private void timer8_Tick(object sender, EventArgs e)
{
if (pictureBox8.Visible == true)
{

pictureBox2.Visible = true;
pictureBox3.Visible = true;
pictureBox4.Visible = true;
pictureBox5.Visible = true;
pictureBox6.Visible = true;
pictureBox7.Visible = true;
pictureBox8.Visible = false;
pictureBox9.Visible = true;

}
else if (pictureBox8.Visible == false)
{

pictureBox2.Visible = false;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
pictureBox5.Visible = false;
pictureBox6.Visible = false;
pictureBox7.Visible = false;
pictureBox8.Visible = true;
pictureBox9.Visible = false;

}

}



private void timer9_Tick(object sender, EventArgs e)
{
if (pictureBox9.Visible == true)
{

pictureBox2.Visible = true;
pictureBox3.Visible = true;
pictureBox4.Visible = true;
pictureBox5.Visible = true;
pictureBox6.Visible = true;
pictureBox7.Visible = true;
pictureBox8.Visible = true;
pictureBox9.Visible = false;

}
else if (pictureBox9.Visible == false)
{

pictureBox2.Visible = false;
pictureBox3.Visible = false;
pictureBox4.Visible = false;
pictureBox5.Visible = false;
pictureBox6.Visible = false;
pictureBox7.Visible = false;
pictureBox8.Visible = false;
pictureBox9.Visible = true;
timer2.Stop();
timer3.Stop();
timer4.Stop();
timer5.Stop();
timer6.Stop();
timer7.Stop();
timer8.Stop();
timer9.Stop();

timer2.Start();
timer3.Start();
timer4.Start();
timer5.Start();
timer6.Start();
timer7.Start();
timer8.Start();
timer9.Start();

}

}


}
}

7 Risposte

  • Re: Problemi con i timer su una serie di immagini in movimento

    Inizia con METTERE A POSTO il codice che hai scritto!
    NON HA SENSO avere otto timer, te ne basta UNO! Che farai partire al LOAD del form e fermare all'EXIT del form!
    E nemmeno OTTO pictureBox!

    La soluzione E' BANALE: scegli A ROTAZIONE l'immagine da visualizzare:

    1 2 3 4 5 6 7 8 1 2 3 ...
  • Re: Problemi con i timer su una serie di immagini in movimento

    Grazie per la risposta, quindi giusto per fare un passo alla volta, come faccio ad usare una pictureBox (oppure altro) per gestire otto immagini?
  • Re: Problemi con i timer su una serie di immagini in movimento

    Ho utilizzato un solo timer come consigliatomi ma ancora non girano regolarmente!!
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication8
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
                timer2.Start();
     
            }
    
    
    
            private void timer2_Tick(object sender, EventArgs e)
            {
                if (pictureBox2.Visible == true)
                {
                    pictureBox2.Visible = false;
                }
                else if (pictureBox2.Visible == false)
                {
                    pictureBox2.Visible = true;
    
    
                    if (pictureBox3.Visible == true)
                    {
                        pictureBox3.Visible = false;
                    }
                    else if (pictureBox3.Visible == false)
                    {
                        pictureBox3.Visible = true;
                    
    
    
                    if (pictureBox4.Visible == true)
                    {
                        pictureBox4.Visible = false;
                    }
                    else if (pictureBox4.Visible == false)
                    {
                        pictureBox4.Visible = true;
                        if (pictureBox5.Visible == true)
                        {
                                                    
                            pictureBox5.Visible = false;
                           
                        }
                        else if (pictureBox5.Visible == false)
                        {
    
                              pictureBox5.Visible = true;
                              if (pictureBox6.Visible == true)
                              {
                                  
                                  pictureBox6.Visible = false;
                                  
                              }
                              else if (pictureBox6.Visible == false)
                              {
    
                                  
                                  pictureBox6.Visible = true;
                                  if (pictureBox7.Visible == true)
                                  {
    
                                      pictureBox7.Visible = false;
                                      
                                  }
                                  else if (pictureBox7.Visible == false)
                                  {
    
                                      pictureBox7.Visible = true;
                                      if (pictureBox8.Visible == true)
                                      {
    
                                          pictureBox8.Visible = false;
                                              }
                                      else if (pictureBox8.Visible == false)
                                      {
    
                                          pictureBox8.Visible = true;
                                          if (pictureBox9.Visible == true)
                                          {
    
                                             
                                              pictureBox9.Visible = false;
    
                                          }
                                          else if (pictureBox9.Visible == false)
                                          {
    
                                              
                                              pictureBox9.Visible = true;
                                              
    
                                          }
    
                                      }
    
                                  }
                
                              }
                        }
                    }
                    }
                }
            }
        }
    }
  • Re: Problemi con i timer su una serie di immagini in movimento

    Quando proponi del codice sorgente devi fare uso dei tag [ CODE ] per mantenerne la formattazione e la leggibilità, altrimenti ne risulta un guazzabuglio ingestibile e illeggibile.

    Per questa volta ho provveduto io: presta maggiore attenzione in futuro.
  • Re: Problemi con i timer su una serie di immagini in movimento

    Grazie M.A.W.
    quindi inserisco prima il tag
     e poi inserisco il codice?
    Provo così
    Ho trovato una soluzione vorrei sapere se  è giusta questo è il codice:
    [code]
    echo "Questo è un codice";
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (pictureBox1.Visible == true)
                {
                    pictureBox1.Visible = false;
                    pictureBox2.Visible = true;
                
                }
                else if (pictureBox2.Visible == true)
                {
                    pictureBox2.Visible = false;
                    pictureBox3.Visible = true;
    
                }
                else if (pictureBox3.Visible == true)
                {
                    pictureBox3.Visible = false;
                    pictureBox4.Visible = true;
    
                }
                else if (pictureBox4.Visible == true)
                {
                    pictureBox4.Visible = false;
                    pictureBox5.Visible = true;
    
                }
                else if (pictureBox5.Visible == true)
                {
                    pictureBox5.Visible = false;
                    pictureBox6.Visible = true;
    
                }
                else if (pictureBox6.Visible == true)
                {
                    pictureBox6.Visible = false;
                    pictureBox1.Visible = true;
    
                }
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                timer1.Start();
            }
        }
    }
    
  • Re: Problemi con i timer su una serie di immagini in movimento

    E manca il [/code] alla fine del codice
  • Re: Problemi con i timer su una serie di immagini in movimento

    Questo è un'altro metodo con imagelist, ma si ferma dopo il ciclo delle quattro immagini.
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            int i = 0;
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                timer1.Enabled = true;
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                
                    if (i < imageList1.Images.Count)
                    {
                        pictureBox1.Image = imageList1.Images[i];
                       i++;
                   
    
                }
                    
            }
        }
    }
    
Devi accedere o registrarti per scrivere nel forum
7 risposte