AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Anwendung ruckelt beim Vergrößern/Verkleinern
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung ruckelt beim Vergrößern/Verkleinern

Ein Thema von Aviator · begonnen am 25. Jun 2016 · letzter Beitrag vom 26. Jun 2016
 
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#1

Anwendung ruckelt beim Vergrößern/Verkleinern

  Alt 25. Jun 2016, 19:11
Hallo zusammen,

mit folgendem Quellcode zeichne ich diverse Bilder in eine PaintBox:

Delphi-Quellcode:
procedure TfrmCardInfo.pbCardsPaint(Sender: TObject);
var
  i, col, row: Integer;
  BasePath, s: string;
  img: TJPEGImage;
  Start: Cardinal;
begin
  if (FBFCardInfoList.Count > 0) then begin
    img := TJPEGImage.Create;
    try
      col := 1;
      row := 0;
      i := 0;
      Start := GetTickCount;
      repeat
        FBFCardInfoList[i].Picture.Position := 0;
        img.LoadFromStream(FBFCardInfoList[i].Picture);
        pbCards.Canvas.Draw((col - 1) * img.Width + 5, row * img.Height + 10, img);

        if ((col mod FMaxCols) = 0) then begin
          col := 1;
          Inc(row);
        end else
          Inc(col);
        Inc(i);
      until (i >= FBFCardInfoList.Count);
      lblOrbs.Caption := IntToStr((GetTickCount - Start));
    finally
      img.Free;
    end;
  end;
end;
Die Bilder wurden zuvor in einem Thread von der Festplatte geladen und werden nun in einem Klassenobjekt in einer Objectlist aufbewahrt. Ich lade beim Zeichnen der Bilder auch immer nur noch aus einem Stream in ein TJPEGImage. Jedoch fängt die Anwendung an zu ruckeln, sobald ich das Fenster vergrößere und verkleinere. Die PaintBox in die gezeichnet wird, wird beim ändern der Formgröße immer durch die Anchor Property mit angepasst. Nehme ich die Zeile pbCards.Canvas.Draw((col - 1) * img.Width + 5, row * img.Height + 10, img); raus, dann läuft es flüssig(er). Getestet unter Windows 10 und Windows 7. Woran kann das liegen? Ist die Canvas.Draw Methode wirklich so langsam?

Wie kann ich das beschleunigen, da ich diese Ruckeleffekte nicht haben möchte?

PS: Das lblOrbs habe ich dazu verwendet, um die Zeit auszugeben wie lange gezeichnet wird. Das Ergebnis liegt immer irgendwo bei 300 - 370ms.

Geändert von Aviator (25. Jun 2016 um 20:34 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz