Bilder zeitgesteuert umschalten (war: Bitmaps)



  • Hallo,

    ich möchte das eine Minute lang 2 Bitmaps im 1 sek hin- und herschalten, wenn die 1 Minute rum ist soll nun ein drittes Bild angezeigt werden und zwar nur dieses. Ein hin-und herschalten der 2 Bilder habe ich schon mit 2 Timern gelöst, aber das mit dem 3. Bild, da hab ich keine Idee. Das ist der Quellcode mit den Bildern:

    void __fastcall TForm2::Timer1Timer(TObject *Sender)
    {
            Image2->Picture->LoadFromFile("01_2.bmp");
            Timer2->Enabled=true;
            Timer1->Enabled=false;
            DoubleBuffered=true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm2::Timer2Timer(TObject *Sender)
    {
            Image2->Picture->LoadFromFile("01.bmp");
            Timer1->Enabled=true;
            Timer2->Enabled=false;
            DoubleBuffered=true;
    
    }
    

    Wäre dankbar für jeden Lösungsansatz.

    Edit:
    Bitte aussagekräftige Überschriften wählen, und bitte die Code-Tags verwenden. Danke!



  • ein timer:

    void __fastcall TForm2::Timer1Timer(TObject *Sender)
    {
      static int counter = 0;
      if(counter<60)
      {
        if(counter % 2 ==0)
          Image2->Picture->LoadFromFile("erstesbild.bmp");
        else
          Image2->Picture->LoadFromFile("zweitesbild.bmp");
      }
      else
        Image2->Picture->LoadFromFile("drittesbild.bmp");
    
      counter++;
    }
    

    so ists doch einfacher



  • Hab zwar aktuell nichts mehr mit BCB am Hut, aber grob würde ich es so machen:

    Alle Bilder in eine ImageList.
    Einen Timer auf 1 sec einstellen.
    Im OnTimer Ereignis eine statische Variable "static int count=0;" immer um 1 incrementieren.
    Abfrage "count%2" also ob gerade oder ungerade dann jeweiliges Bild zuweisen.
    Wenn count>59 "EndBild" anzeigen und Timer aus.



  • zu langsam ... 😉



  • oder gleich so, dann wird nach einer Minute nicht unnötig jede Sekunde ein Bild geladen

    void __fastcall TForm2::Timer1Timer(TObject *Sender)
    {
      static int counter = 0;
      if(counter<60)
      {
        if(counter % 2)
          Image2->Picture->LoadFromFile("zweitesbild.bmp");
        else
          Image2->Picture->LoadFromFile("erstesbild.bmp");
      }
      else {
        Image2->Picture->LoadFromFile("drittesbild.bmp");
        Timer1->Enabled=false;
      }
    
      counter++;
    }
    

Anmelden zum Antworten