Entwickler-Ecke

Multimedia / Grafik - Diashow mit großen Bitmaps


wulfskin - Do 27.02.03 17:50
Titel: Diashow mit großen Bitmaps
Hallo!

Ich habe mal wieder ein Problem: Um die Bilder meiner Digitalkamera bequem anzuschauen, habe ich mir eine Diashow programmiert. Sie läuft eigentlich auch ganz ordentlich nur leider wird mit der Zeit mein Speicher immer voller bis zu letzt ein Parameterfehler auftritt. Das passiert nach ca. 50 Bildern. Die Bilder haben eine Größe von 2048 * 1536. Ich verstehe nicht so recht warum, denn ich benutze insgesamt nur ein BitMap, dem beim Wechsel ein neues JPEG zugeordnet wird. Da die ursprünglichen Dateien JPEGs sind, wandle ich diese erst in BitMaps um und zeichne sie dann mit StretchDraw auf eine PaintBox. Dies geschieht in dem OnPaint-Ereignis.
Welche Möglichkeiten gibt es den Speicher freizugeben, bzw. die Speichergröße der BitMaps zu veringern?
Achja, die Methoden Dormant und FreeImage haben mir keinen erkennbaren Geschwindigkeits- und Speichervorteil gebracht, ich benutze sie aber trotzdem.

Danke Hape


GruppeCN - Do 27.02.03 20:45

Ich würde es mal mit der Image Komponente versuchen. Dann kannst du die Grafiken direkt anzeigen und musst sie nicht erst umwandeln.


derDoc - Do 27.02.03 20:47

Wenn du eine Image Komponente benutzt musst du die Bilder auch mit
Image1.Picture.Bitmap.Free;
wieder freigeben, sonst schreibst du die immer weiter in deinen Arbeitsspeicher, bis der voll ist. Unter 9x-Systemen ist das ein beliebter Absturzgrund.


wulfskin - Fr 28.02.03 14:49

Hallo!

Zunächst recht herzlichen Dank für Eure Antworten!
Leider haben sie mir nicht wirklich weitergeholfen, da ich keine Image-Komponente benutzen kann, bzw. dies kein Unterschied machen würde, da ich die Bilder umwandeln muss, damit ich sich verkleinert, bzw. vergrößert darstellen kann. Das ganze soll nämlich zunächst eine Miniaturansicht sein und kann dann in den Vollbild geschalten werden. Und ob ich zum Anzeigen nun eine Image oder PaintBox-Komponente benutze, dürfte wohl kein Unterschied machen, oder doch?
Übrigens, den Tipp von derDoc benutze ich schon, doch es hilft nix!

Hat jemand noch einen Tipp?

Vielen Dank,
Hape