![]() |
Großes Bitmap laden/scrollen
Hallo,
hab mal eine Frage an euch was am geschicktesten ist um folgendes zu bewerkstelligen. Ich hab einen Stadtplan bestehend aus 10x12 Bildern wobei jedes Bild eine Größe von 1024x1024 Pixeln hat (also der Plan insgesamt 10240x12288 Pixel). Davon sollen Ausschnitte mit einer Größe von etwa 1000x1000 Pixeln angezeigt werden, allerdings muss es möglich sein über den Ausschnitt zu scrollen, bzw. bei zu bestimmten Koordinaten der gesamt Karte zu "springen" und dann diese als Ausschnitt anzuzeigen. Das scrollen/springen zu Koordinaten ansich ist nicht mein Problem, nur wie "lade" ich ein so riesiges Bild "vernünftig/ressourcenschonend"? Einfach in ein TImage rein macht bei der Größe ja vermutlich wenig Sinn... Für Vorschläge wär ich sehr dankbar, Gruß Lars |
Re: Großes Bitmap laden/scrollen
Am sinnvollsten wäre es wohl nur die maximal 4 Bilder zu laden, die du brauchst um die gerade aktuelle Ansicht zusammenzubauen. Welche du brauchst lässt sich ja über die Koordinaten ermitteln.
Eine weitere Optimierung wäre dann noch, wenn du die Richtung mit in Betracht ziehst um die das Bild verschoben wird. Oftmals musst du nicht das gesamte Bild neu zusammenstellen, sondern kannst den aktuellen Ausschnitt (z.B. via BitBlt) verschieben, und musst dann nur noch die dann frei gewordenen Stellen anfügen. Dann musst du nur noch die Bilder laden, die an diesen Stellen bebraucht werden. Falls das Nachladen von 1024x1024 großen Stücken zu lange dauert, könntest du auch noch überlegen sie noch feiner zu unterteilen - das begünstigt kleine Verschiebungen wo nur wenig angefügt werden müsste, ist aber evtl. für große Sprunge bei denen alles neu gezeichnet werden muss etwas langsamer (möglicherweise aber kaum merkbar). Wie weit du es letztlich treiben willst hängt davon ab was du brauchst. Wenn es nur via Klicks in einer Map herumspringen wie z.B. bei Google Maps ist, reicht es locker den ersten Ansatz zu nehmen. Möchtest du aber ruckfreies "smoothes" Scrollen der Map haben (wie in einem Spiel z.B.), ist es wohl günstiger den Mehraufwand der feineren Unterteilung sowie der Ermittlung gebrauchter Elemente zu betreiben. Das kann man sogar so weit führen, dass man über eine Heuristik wahrscheinlich demnächst gebrauchte Bildteile schon vorab lädt, wobei das für deine Anwendung vermute ich dezenter Overkill wäre :) Ich würde das Schritt für Schritt angehen, und sobald das Ergebnis für dich gut ist stoppen, weil der Zugewinn den Aufwand dann nicht mehr rechtfertigen würde. Da die Verfahren ja alle ähnlich sind und quasi aufeinander aufbauen machst du dabei auch kaum Arbeit zu viel. |
Re: Großes Bitmap laden/scrollen
|
Re: Großes Bitmap laden/scrollen
du könntest einfach eine TPaintBox zum anzeigen nehmen und nur die nötigen Bilder draufkopieren,
das ginge relativ schnell und Resourcenschonend. die Bilder brauchst dann nur in enzelne interne Strukturen laden (z.B. TJpeg oder so, wo halt wenig Speicher belegt wird) und notfalls könnte man noch (falls nicht alle Bilder zusammen in den RAM geladen werden sollen) drüber nachdenken die im Moment unnötigen Bilder garnicht erst zu laden und nur bei Bedarf nachzuladen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz