Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Bilder zur Laufzeit generieren -> Fehler: EOutOfResou

  Alt 6. Mär 2005, 16:20
Moin!

WIndows 98 SE hat einen beschränkten GDI Handle Pool von 128 KB - daher kann das OS maximal (128 * 1024 / 4) 32768 Handles für GDI Objekte vergeben. (oder waren die 128 KB erst ab ME?). Zumindest braucht eine TImage Instanz vom System schon allein derer 6 (mem dc, bitmap handle, bitmap canvas dc, bitmap canvas pen, bitmap canvas font, bitmap canvas brush) wodurch du sehr schnell in bredouille kommst. (der GDI Handle Pool ist global, also alle Applikation GDI + System GDI Handles)..

Empfehlung:
Nimm eine TImageList und setze dort die Höhe/Weite der gewünschten Vorschaubilder. Darin dann die !verkleinerten! Bilder ablegen und in der Dateianzeige keine TImage mehr instanziieren - selber malen. Einfach das Bild aus der TImageList holen und direkt dahin malen.

Ich habe mal eine klasse geschrieben die dieses Manko nach dem selben Prinzip wie eine TImageList (intern ein Bild) behebt und damit konnte ich eine Anwendung schreiben die dann mehrere Tausend Bitmaps laden und handeln konnte (bis 23.000 Bitmaps ausprobiert), da die Anwendung dies immer machen musste. Diese Klasse werde ich hier aber nicht veröffentlichen, daher nutze die TImageList oder bau dir nach dem selben Prinzip eine solche Klasse...

MfG
Muetze1
  Mit Zitat antworten Zitat