Thema: Delphi APNG Support

Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

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

AW: APNG Support

  Alt 18. Mär 2017, 15: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
AppCentral

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