Demo poniżej próbuje wyciągnąć GIF-y na płótnie formularza. To nie działa. Obraz nie przesuwa się. Jak to działa?Jak wyodrębnić ramki z TGifImage w bitmapy?
procedure TForm1.FormCreate(Sender: TObject);
begin
GIF := TGIFImage.Create;
GIF.LoadFromFile('c:\2.gif');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
GIF.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
VAR i: Integer;
begin
REPEAT
for i:= 0 to GIF.Images.Count-1 DO
begin
DisplayGifFrame(i);
Sleep(30);
end;
UNTIL FALSE;
end;
procedure TForm1.DisplayGifFrame(AIndex: Integer);
VAR
Renderer: TGIFRenderer;
begin
Renderer := TGIFRenderer.Create(GIF);
TRY
Renderer.Animate := TRUE;
Renderer.FrameIndex := AIndex;
Renderer.Draw(Canvas, Canvas.ClipRect);
{save frame in a bitmap here. save bitmap to disk}
// xxx
FINALLY
Renderer.Free;
end;
end;
Co chcę osiągnąć:
chcę wyodrębnić wszystkie klatki z GIF i umieścić każdą klatkę w wyjątkowej bitmapy.
Aktualizacja:
Ciąg dalszy tutaj: Cannot draw GIF on dynamically created TBitmap(s)
Jakie jest dokładnie twoje pytanie? Jaki masz problem z opublikowanym przez Ciebie kodem? Co nie działa tak, jak można się spodziewać? Spróbuj przeczytać swoje pytanie z naszego punktu widzenia, pamiętając, że nie wiemy absolutnie nic o tym, co twój kod próbuje zrobić, co myślisz, że powinien robić, ani żadnych informacji o tym, co nie działa. Następnie zmodyfikuj i dodaj więcej szczegółów, abyśmy mogli uzyskać pomoc. :-) –
Nie wiem, kto przegrywa tak szybko, ale proszę, przestań. Daj temu plakatowi kilka minut, aby odpowiedzieć na komentarze i naprawić pytanie przed podjęciem decyzji o zgładzeniu, szczególnie gdy ludzie już o to poprosili. @Altar: "To nie działa" oznacza absolutnie nic dla nikogo oprócz Ciebie. ** Ponownie przeczytaj moją ostatnią uwagę **. –
Pytanie zaktualizowane. Dzięki Ken za uspokojenie stada :) – Ampere