AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Warum brauchen BitBlt und StretchBlt soviel Speicher?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum brauchen BitBlt und StretchBlt soviel Speicher?

Ein Thema von Harry Stahl · begonnen am 20. Okt 2020 · letzter Beitrag vom 21. Okt 2020
 
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#1

Warum brauchen BitBlt und StretchBlt soviel Speicher?

  Alt 20. Okt 2020, 18:31
Gerade bin ich auf eine interessante Sache gestoßen: Wenn ich irgendwo eine Bitmap mit BitBlt oder StretchBlt verwende, wird dafür nochmal die gleiche Größe im Arbeitsspeicher erzeugt, wie die Bitmap selber hat.

Beispiel: Lade ich eine 21.600 x 10.800 große Grafik in mein Programm und habe dabei vorgegeben, dass die Grafik in 100% Größe angezeigt wird (in einer Paintbox - und ich dann für die Anzeige Paintbox.canvas.draw (x,y, Bitmap) verwende), dann braucht mein Programm nur 700 MB Arbeitsspeicher.

Lasse ich das Bild mit Stretchblt in einer anderen skalierten Größe anzeigen (oder auch in 100% aber mit BitBlt die Bitmap auf das Paintbox.handle kopiert), dann werden 1,4 GB Arbeitsspeicher benötigt.
Ich bin da wirklich mit dem Debugger durch, bei Aufruf von StretchBlt erhöht sich die Anzeige im Taskmanager von 700 MB auf 1,4 MB.

Anscheinend legt StretchBlt irgendwie Speicher für diese Bitmap an, gibt ihn nachher aber nicht mehr frei (ein erneuter Aufruf von Stretchblt führt aber nicht zu weiteren Speicherverbräuchen).

Gibt es eine Möglichkeit, diesen verbrauchten Speicher wieder zurückzusetzen?

Ich bin dabei darauf gestoßen, nachdem ich alle Undo-Einstellungen in meinem Programm deaktiviert hatte und trotzdem noch der Doppelte Arbeitsspeicher benötigt wurde, als die Bitmap rein rechnerisch benötigen würde.
  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 02:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz