Bildladestatus in ProgressBar anzeigen
-
Hi Leute,
ich will Bilder darstellen lassen, die ziemlich groß sind, das bedeutet, das sie Ladezeit auch dementsprechend lang ist. Um anzuzeigen, wie viel schon geladen ist will ich eine ProgressBar einbauen, die dieses Anzeigt. Jetzt ist meine Frage, wie frage ich ab, wie viel Porzent des Bildes geladen sind damit ich dieses in der ProgressBar darstellen kann?
Danke schon mal für eure Hilfe
mfG TIm
-
Dafür müsstest du uns schon mitteilen, wie und womit du die Bilder lädst.
Bei den Standard-LoadFromFile-Methoden von TImage etc. gibt's jedenfalls keine entsprechende Möglichkeit. Ggf. kannst du den Umweg über einen MemoryStream machen und regelmässig dessen Grösse abfragen.
-
Hi Jansen,
könntest du mir das mit dem MemoryStream mal genau erlautern?
Da ich das Bild über die Standard-LoadFromFile-Methoden laden lasse.
DANKE
-
Dateigrösse ermitteln, Datei in TMemoryStream laden.
Mittels Timer alle 100ms oder so die Grösse des Streams abfragen, Prozent der Gesamtgrösse berechnen und die ProgressBar aktualisieren.
Wenn fertig per LoadFromStream in's TImage laden.Ansonsten sieh auch hier:
http://www.c-plusplus.net/forum/viewtopic.php?t=53490&highlight=fortschritt
-
Es gibt doch bei TImage das Ereignis OnProgress...
BCB5-Hilfe
Das Ereignis OnProgress tritt periodisch während langsam ablaufender Operationen ein, die sich auf das Bild auswirken.enum TProgressStage {psStarting, psRunning, psEnding};
typedef void __fastcall (__closure *TProgressEvent)(System::TObject* Sender, TProgressStage Stage, Byte PercentDone, bool RedrawNow, const Windows::TRect &R, const AnsiString Msg);
__property Graphics::TProgressEvent OnProgress = {read=FOnProgress, write=FOnProgress};
-
Leider wird dieses Event während LoadFromFile nicht ausgelöst ...
Aber eine nette Idee, die Existenz von OnProgress war mir gar nicht bewusst.