Autor Beitrag
kloti
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 04.02.03 22:02 
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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 40



BeitragVerfasst: Di 04.02.03 23:05 
Versuch es sonst mal mit
ausblenden 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

_________________
There are only 10 types of people,
those who understand binary and
those who don't
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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