.Dormant wandelt das Bitmap von einem
GDI Object in ein SYSTEM Object um. Das heist im Klartext das dessen Daten nicht im limitierten
GDI Speicher liegen sondern im normalen Hauptspeicher des Prozesses. Diese Methode ist langsam da nicht nur der Speicher kopiert wird sondern auch das Format der Pixeldaten sich ändern kann.
Die schnellste Methode ist es eine ImageList zu verwenden wenn da nicht das Problem wäre das ImageList's nur gleichgroße Bitmaps, mit der Farbauflösung des Systems und in beschränkter Größe/Anzahl speichern kann.
Eventuell solltest du mal Bitmap.SaveToStream(MemoryStream) versuchen. Du speichert also die Bitmap temporär in einen MemoryStream. Deine Liste/Array besteht also nur aus TMemoryStream Objecten und erst zur Anzeige wird ein temporäres TBitmap Object aus dem MemoryStream geladen.
Oder du benutzt gleich nur einen einzigsten TMemoryStream in dem nacheinander die Bitmaps gespeichert werden. Dann benötigst du noch eine kleine Liste/Array das die Offsets == MemoryStream.Position zu den einzelnen Bitmaps im Stream speichert.
Exakt dieses Konzept nutze ich bei meiner TPictureList Komponente. Diese kann beliebige Grafik-Formate in einen gemeinsammen MemoryStream verwalten, natürlich mit zusätzlichen Informationen wie ID, Farbanpassungen, Flags für Zeichenoperatonen wie die Ausrichtung -> zentriert, links, rechts, oben, unten, gekachelt, transparent, Hintergrundfarbe usw. usw. Die TPictureList stellt dann Methoden zum Zeichnen dieser Bilder in einen rechteckigem Bereich mit deren Einstellungen zur Verfügung. Die Bilder werden dabei über eine frei zu vergebende aber eindeutige ID ausgewählt. Diese TPictureList lässt sich über einen Editor zur DesignTime mit Bildern füllen, in einem Rutsch in Dateien laden, speichern und in
DFM's speichern. Aber egal das dürfte für dich ja über das Ziel hinaus sein.
Gruß Hagen