Thema: Delphi APNG Support

Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.351 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: APNG Support

  Alt 18. Mär 2017, 14:38
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (18. Mär 2017 um 14:49 Uhr)
  Mit Zitat antworten Zitat