Problemi con i timer su una serie di immagini in movimento

di Anonimizzato16767 il
7 risposte
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

  • 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 ...
  • Grazie per la risposta, quindi giusto per fare un passo alla volta, come faccio ad usare una pictureBox (oppure altro) per gestire otto immagini?
  • 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;
                                              
    
                                          }
    
                                      }
    
                                  }
                
                              }
                        }
                    }
                    }
                }
            }
        }
    }
  • 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.
  • 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();
            }
        }
    }
    
  • E manca il [/code] alla fine del codice
  • 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