Ich soll also 10000 Units einbinden nur um den Header der APNG einzulesen und diese abzuspielen?
Macht keinen Sinn oder 99% des gesamten Quelltext will oder muss ich gar nicht nutzen.
Das finde ich sinnvoller als für jede winzige Funktionalität eine eigene Bibliothek zu benutzen.
Eine Bibliothek, die nur ein einzelnes Format unterstützt, würde ich nur nutzen, wenn es nicht anders geht. Denn sonst blähe ich mir die Exe unnötig auf sobald ich mehr als eins brauche, da in jeder Bibliothek, die ich einbinde, die gleiche Funktionalität doppelt und dreifach enthalten ist...
Um Abspielen zu ergänzen reichen jedenfalls ein Button und ein Timer (Intervall 50-100ms):
Delphi-Quellcode:
procedure TMainForm.tmrPlayTimer(Sender: TObject);
begin
if FImage.ImageCount > FImage.ActiveImage + 1 then
FImage.ActiveImage := FImage.ActiveImage + 1
else
FImage.ActiveImage := 0;
SetSupported;
PaintBox.Repaint;
end;
procedure TMainForm.btnPlayClick(Sender: TObject);
begin
tmrPlay.Enabled := not tmrPlay.Enabled;
if tmrPlay.Enabled then
btnPlay.Caption := 'Abspielen stoppen'
else
btnPlay.Caption := 'Abspielen starten';
end;
Das flackert so noch, aber das ließe sich sicher noch korrigieren.
// EDIT:
Wenn man das ganze Zeug aus OnPaint herausnimmt, das dort für eine Animation nicht reingehört (alles bis auf die letze Zeile) und in den Timer vor das Repaint setzt und DoubleBuffered im Objektinspektor für das Formular setzt, flackert da auch nix mehr.