Problemi con i timer su una serie di immagini in movimento

Forum di discussione su C# e Visual C#.

Moderatore: Toki

Regole del forum
Leggi: IProgrammatori.it - Regolamento Forum
Avatar utente
Bennygoll
Utente Junior
Messaggi: 19
Iscritto il: 11 apr 2015, 08:31

Problemi con i timer su una serie di immagini in movimento

Messaggioda Bennygoll » 02 mag 2017, 18:46

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#

Codice: Seleziona tutto

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();

}

}


}
}
Avatar utente
migliorabile
Utente Senior
Messaggi: 2772
Iscritto il: 05 apr 2013, 09:44

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

Messaggioda migliorabile » 02 mag 2017, 20:52

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 ...
Avatar utente
Bennygoll
Utente Junior
Messaggi: 19
Iscritto il: 11 apr 2015, 08:31

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

Messaggioda Bennygoll » 03 mag 2017, 08:42

Grazie per la risposta, quindi giusto per fare un passo alla volta, come faccio ad usare una pictureBox (oppure altro) per gestire otto immagini?
Avatar utente
Bennygoll
Utente Junior
Messaggi: 19
Iscritto il: 11 apr 2015, 08:31

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

Messaggioda Bennygoll » 03 mag 2017, 11:57

Ho utilizzato un solo timer come consigliatomi ma ancora non girano regolarmente!!

Codice: Seleziona tutto

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;
                                         

                                      }

                                  }

                              }
           
                          }
                    }
                }
                }
            }
        }
    }
}
Avatar utente
M.A.W. 1968
Moderatore
Messaggi: 310
Iscritto il: 15 ott 2011, 19:02
Località: Un luogo geometrico
Contatta:

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

Messaggioda M.A.W. 1968 » 03 mag 2017, 13:22

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.
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...
Avatar utente
Bennygoll
Utente Junior
Messaggi: 19
Iscritto il: 11 apr 2015, 08:31

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

Messaggioda Bennygoll » 05 mag 2017, 09:24

Grazie M.A.W.
quindi inserisco prima il tag

Codice: Seleziona tutto

 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();
        }
    }
}
Ultima modifica di Bennygoll il 05 mag 2017, 09:33, modificato 1 volta in totale.
oregon
Utente Senior
Messaggi: 9900
Iscritto il: 20 nov 2011, 18:54
Località: Roma

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

Messaggioda oregon » 05 mag 2017, 09:30

E manca il [/code] alla fine del codice
___________________
"Il gioco del Lotto : la tassa sull'imbecillità". (Bruno De Finetti, grande matematico italiano)
Avatar utente
Bennygoll
Utente Junior
Messaggi: 19
Iscritto il: 11 apr 2015, 08:31

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

Messaggioda Bennygoll » 05 mag 2017, 10:49

Questo è un'altro metodo con imagelist, ma si ferma dopo il ciclo delle quattro immagini.

Codice: Seleziona tutto

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++;
               

            }
               
        }
    }
}

Torna a “C# .NET”

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti