Probleme mit Bild bewegen



  • Ich habe ein schönes Hintergrundbild und wollte in seinem Vordergrung einen Vogel fliegen lassen. Diesen hab ich als animierten gif eingefügt und mit einem Timer immer um einen Pixel verschoben...
    Nun mein Problem: Das Gif hat standartmäßig einen transparenten Hintergrund aber wenn ich es in das Prog reinlade speichert es den Hintergrund auf dem es zum ersten mal erscheint und zieht diesen mit...
    Ich hoffe ich hab micht nicht zu unverständlich ausgedrückt. 😕
    Kann mir jemand sagen wie ich es schaffe,dass der hintergrund nicht teilweise mitgezogen wird...



  • zeichne dein komplettes bild im hintergrund (d.h. nicht sichtbar in ein temp. bild, siehe: double buffering) und zeige dieses bild erst nach beendigung des zeichenvorgangs an.



  • kann mir jemand sagen wo ich ein gutes Tutorial zu double buffering finde?





  • mit DoubleBuffered geht zwar das ruckeln weg , aber das ist nicht die Lösung für mein Problem...
    Mein Gif speichert trotzdem den Hintergrund, wo es zum ersten mal erscheint und zieht diesen mit:

    TGIFImage *gif = new TGIFImage();
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    
    TJPEGImage *jpg = new TJPEGImage();
    jpg->LoadFromFile("landschaft.jpg");
    Image->Picture->Assign(jpg);
    Image->Height = Image->Picture->Height;
    Image->Width = Image->Picture->Width;
    Form1->ClientHeight = Image->Picture->Height;
    Form1->ClientWidth = Image->Picture->Width;
    gif->LoadFromFile ("arg-blue-tr.gif");
    vogel->Picture->Assign(gif);
    vogel->Left = 0;
    
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::TimerLTimer(TObject *Sender)
    {
    DoubleBuffered=true;
    
     vogel->Left = vogel->Left+1;
     if(vogel->Left == 800) vogel->Left = -99;
    }
    

    der Gif ist von der seite : [url]www.btinternet.com/ ~judyin.london/arg-blue-tr.gif
    [/url]
    und der hintergrund ist irgend ein JPEG

    schaut euch einfach mal selbst an...



  • und wo ist dein double buffering?

    wie ich schon schrieb, benötigst du 2 bilder. eines was angezeigt wird und eines was versteckt (invisible) ist. in das versteckte zeichnest du dein hintergrundbild und deinen vogel und blittest (anzeigen) dieses dann auf den bildschirm. dann veränderst du die koordinaten des federviehs und zeichnest erneut den hintergrund und die neue position des vogels wieder in das versteckte bild. ist das erledigt dann das bild wieder anzeigen.


Anmelden zum Antworten