Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bitmaps archivieren und laden? (https://www.delphipraxis.net/100350-bitmaps-archivieren-und-laden.html)

Rastaman 26. Sep 2007 21:31


Bitmaps archivieren und laden?
 
Hallo.

Ich hatte vor für ein Spiel alle Bitmaps binär hintereinanderweg in eine Datei zu schreiben
und dann eben zur Laufzeit zu laden, damit nicht hunderte Bitmaps in Ordnern rumfliegen und auch leicht verändert werden können.
Das Problem ist allerdings, dass die Funktion, die zum Bitmapladen verwendet wird, nur einen Dateinamen als Parameter erwartet. Wie soll das gehen ohne temporäres Speichern?
Ich hab auch schon überlegt, alles in eine DLL zu verpacken als Resource und dann mit MAKEINTRESOURCE(???) als Dateinamen zu übergeben, allerdings geht das Programm dann
sofort und ohne Fehlermeldung aus :| Naja, das "Bitmaparchiv" wär mir sowieso lieber.

Jemand ne Idee?
Danke schonma :!:

boserPascal 26. Sep 2007 21:39

Re: Bitmaps archivieren und laden?
 
Die WinApi bietet die Möglichkeit aus einem Bild, einen Bereich in eine Bitmap zu laden.

Die Funktion dafür ist unter anderen BitBlt!

Rastaman 26. Sep 2007 22:03

Re: Bitmaps archivieren und laden?
 
Hi. Danke, aber danach suche ich nicht.
Ich habe ja ganz viele EINZELNE Bitmaps binär hintereinander in einer einzigen Datei gespeichert
und möchte diese gezielt auslesen. Hinzu kommt ja noch, dass ich als Parameter einen String und kein HDC oder HBITMAP angeben kann.

Blackheart 26. Sep 2007 22:07

Re: Bitmaps archivieren und laden?
 
Erzählen kannst Du ja, zeig etwas Code !

Pfoto 26. Sep 2007 22:12

Re: Bitmaps archivieren und laden?
 
Hallo Rastaman,

ich kann zwar direkt keine Lösung zu Deinem Problem
angeben, möchte dich aber auf eine Komponente hinweisen:
www.torry.net > SingleFileDataStorage

Damit können beliebige Dateien in einer Datei gespeichert
und bequem wieder ausgelesen werden.


Gruß
Pfoto

Rastaman 26. Sep 2007 22:17

Re: Bitmaps archivieren und laden?
 
Hä was soll ich zeigen, wenn ich nix habe.
Ich habe noch gar kein Programm erstellt um bequem solche Dateien mit zig Bitmaps zu erstellen,
denn wieso auch, wenn ich nichtmal weiß, wie ich sie später laden soll?
Die Funktion zum Laden der Bitmap lautet übringens

Code:
SDL_Surface *SDL_LoadBMP(const char *file);
oder grob übersetzt

Delphi-Quellcode:
function SDL_LoadBMP(file: String): PSDL_Surface;
Is ja eigentlich auch egal, denn ich muss wissen wie ich diese Bitmap, die sich irgendwo in einer
großen Datei befindet, die voll ist mit Bitmaps, so präpariere, dass ich sie mit dieser Funktion laden kann.

Blackheart 26. Sep 2007 22:27

Re: Bitmaps archivieren und laden?
 
Zitat:

Zitat von Rastaman
Hi. Danke, aber danach suche ich nicht.
Ich habe ja ganz viele EINZELNE Bitmaps binär hintereinander in einer einzigen Datei gespeichert
und möchte diese gezielt auslesen. Hinzu kommt ja noch, dass ich als Parameter einen String und kein HDC oder HBITMAP angeben kann.

Das hab Ich damit gemeint... zwecklos

Luckie 26. Sep 2007 22:36

Re: Bitmaps archivieren und laden?
 
Lad das große Bitmap in ein TBitmap und kopier dir dann den Teil, den brauchst, aus dem Canvas des gro0en Bitmaps raus.

Rastaman 26. Sep 2007 22:40

Re: Bitmaps archivieren und laden?
 
Zitat:

Zitat von Blackheart
Zitat:

Zitat von Rastaman
Hi. Danke, aber danach suche ich nicht.
Ich habe ja ganz viele EINZELNE Bitmaps binär hintereinander in einer einzigen Datei gespeichert
und möchte diese gezielt auslesen. Hinzu kommt ja noch, dass ich als Parameter einen String und kein HDC oder HBITMAP angeben kann.

Das hab Ich damit gemeint... zwecklos

Brauchst ja nich gleich frech werden. Wenn du nicht verstehst was das bedeutet
kannst du mir sowieso nicht helfen. Aber bitte ...

Code:
---Bilderarchiv1.ba
  - BMP_Gehweg.bmp
  - BMP_Gras.bmp
  - BMP_Wand.bmp
---
So sind meine Bitmaps gespeichert. Einfach binär hintereinander weg.
Dann kommt die Funktion zum Laden der Bitmaps, die als Parameter einen DATEINAMEN, nichts weiter, erwartet.
Wie kann ich jetz z.B BMP_Gras.bmp Laden, ohne eine temporäre Bitmap auf der Festplatte zu erstellen.
Sprich ...

Code:
Erstelle neue Bitmap BMP_Gras.bmp.tmp
Schreibe Datei voll mit den Daten aus Bilderarchiv1.ba
Lade Datei mit SDL_LoadBMP(BMP_Gras.bmp.tmp)
Lösche BMP_Gras.bmp.tmp
Ist wahrscheinlich nicht nur uneffizient sondern auch unschön.

Rastaman 26. Sep 2007 22:44

Re: Bitmaps archivieren und laden?
 
Zitat:

Zitat von Luckie
Lad das große Bitmap in ein TBitmap und kopier dir dann den Teil, den brauchst, aus dem Canvas des gro0en Bitmaps raus.

Roter Kasten :roll:

Nene so gehts ja nicht. Ist wie bei deinem SFX-Archiven. Die Dateien sind einfach hintereinander weg
gespeichert. Es ist ja nicht ein Bild, also eine große Bitmap. Und selbst dann, wenn ich es nach deiner Methode machen
würde, müsste ich die Datei zwischenspeichern auf Festplatte, weil eben ein Dateiname erwartet wird. Das ist ja das Problem :stupid: Ich hab das blöde Gefühl es geht gar nicht ohne Zwischenspeichern :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr.
Seite 1 von 3  1 23      

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