AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Großes Bitmap laden/scrollen
Thema durchsuchen
Ansicht
Themen-Optionen

Großes Bitmap laden/scrollen

Ein Thema von lars2002 · begonnen am 29. Apr 2009 · letzter Beitrag vom 29. Apr 2009
Antwort Antwort
lars2002

Registriert seit: 22. Jan 2006
4 Beiträge
 
#1

Großes Bitmap laden/scrollen

  Alt 29. Apr 2009, 07:10
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
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Großes Bitmap laden/scrollen

  Alt 29. Apr 2009, 07:56
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
HeinzJ

Registriert seit: 17. Aug 2007
Ort: Bremen
84 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Großes Bitmap laden/scrollen

  Alt 29. Apr 2009, 08:04
Zum Stöbern: http://giswiki.org/wiki/Kategorieelphi

HeinzJ
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#4

Re: Großes Bitmap laden/scrollen

  Alt 29. Apr 2009, 09:02
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:27 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