Entwickler-Ecke

Multimedia / Grafik - Prog mit großer Bitmap nach kurzer Zeit langsam


kloti - Di 04.02.03 22:02
Titel: Prog mit großer Bitmap nach kurzer Zeit langsam
Hi,

ich habe ein Delphi Prog geschrieben, in der man eine Namen-Suchfunktion hat, wo dann bei einem Treffer, das Wohnhaus der jeweiligen Person angezeigt wird. Bei dieser Anzeige handelt es sich um ein riesige Bitmapdatei (4000x4000Pixel, ca.35MB).

Bei einem Treffer wird nur ein kleiner Ausschnitt aus der KArte dargestellt. Das mache ich mit der Methode


Quelltext
1:
Image.Canvas.Draw(-2500,-2500,StrassenkarteBitmap);[                    


Beim Testen ist mir aufgefallen, dass die ersten Treffer schnell in der Karte dargestellt werden. Wenn man aber mehrere Anfragen hintereinander stellt, verlansamt sich die Darstellung auf dem Bildschirm !!


Meine Frage:
1. Gibt es "Techniken", um den Speicher nach einer Anfrage/Darstellung auf dem Bildschirm wieder freizugen ??


2. Gibt es ne (schnelle) Alternative zu meiner doch sehr großen Bitmap ??
(ich muß allerdings in dieser Karte auch zeichnen- so ner Art Fadenkreuz)


Bin wie immer für jeden Tipp dankbar !!!


Andreas Pfau - Di 04.02.03 22:46

Du könntest versuchen, die Bits der Bitmap mit GetDiBits() zu extrahieren, zu speichern, und manuell in eine kleinere Bitmap zu zeichnen. Das müsste schneller sein. Ich kann dir aber nix garantieren!


Sivar - Di 04.02.03 23:05

Versuch es sonst mal mit

Quelltext
1:
TBitmap.Canvas.CopyRect(DestRect : TRect; SourceCanvas : TCanvas; SourceRect : TRect);                    


Alternativ mit BitBlt

Das sollte beides schnell genug sein.

Habe es gerade mal mit einem 4000x3800 Bitmap versucht. Ging sehr gut.

Gruß´
Sivar


Andreas Pfau - Mi 05.02.03 18:11

Äh, ja klar logisch, sorry, da habe ich kurz nicht mitgedacht :oops:. Mit Canvas.Draw() wird ja das gesamte Bild gezeichnet, nicht nur der sichtbare ausschnitt. Oder er wird zumindest auf sichtbarkeit geprüft.


kloti - Mi 05.02.03 21:48
Titel: Besten Dank für eure Hilfe !!!
Hi Andreas Pfau und Sivar,

wollte mich nur kurz bei euch bedanken. Habe es geändert. Es läuft jetzt tatsächlich schneller *freu*.

Vielen, vielen Dank !!



Gruß
kloti