AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mehrere Bilder in den RAM laden - Array, ImageList oder was?
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Bilder in den RAM laden - Array, ImageList oder was?

Ein Thema von Master_RC · begonnen am 12. Jun 2005 · letzter Beitrag vom 12. Jun 2005
Antwort Antwort
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#1

Mehrere Bilder in den RAM laden - Array, ImageList oder was?

  Alt 12. Jun 2005, 12:51
hi leutz!

Eine ganz kleine Frage, die mich aber schon die ganze Zeit nervt und ich find einfach keine Lösung...

Und zwar:
Ich möchte, dass die ganzen Tilesets einer Map meines Spiels am Anfang in einen Array geladen werden, damit sie nicht immer von der Festplatten geholt werden.
(Bitte sagen, falls ein Array falsch ist!)

Mein Problem:
Jetzt möchte ich es so machen, dass der Array nicht immer gleich is, also die Bilder werden immer dynamisch geladen - alle aus einem/mehreren Verzeichnis/sen ausgelsen und geladen.

So...
Das Array-Element sollte jetzt einen Namen haben + dem Bild (32x32px groß)

in PHP wärs ja einfach: $array['elementname'] = ...

nur in Delphi... mmh...
Hab schon probiert:
Delphi-Quellcode:
type
   record = TTile
    Name: string;
    Bild: TBitmap;
   end;
und einfach nur
maptiles: array of TBitmap abba keins funzt so richtig, weil ich ja immer maptiles[X] machen muss (fettgedrucktes)...

Ich wär also gerne für Lösungen offen
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#2

Re: Mehrere Bilder in den RAM laden - Array, ImageList oder

  Alt 12. Jun 2005, 13:22
Wenn du das Record hast müsstest du ja auch schreiben:
maptiles: array of TTile; Du könntest auch eine TList nehmen, um die Tiles zu verwalten.

MfG Pr0g
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Mehrere Bilder in den RAM laden - Array, ImageList oder

  Alt 12. Jun 2005, 13:34
Lustig, genau das Gleiche hab ich vor kurzem auch gebraucht. Hier mal mein Code, jedes Bitmap hat einen zugehörigen String:

[Quellcode entfernt, siehe unten]

Den Code kannst du sicher für dich anpassen, LoadGraphicRessources musst du natürlich selbst implementieren.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Mehrere Bilder in den RAM laden - Array, ImageList oder

  Alt 12. Jun 2005, 13:37
schon klar das mit den Array

mein gezeigtes Array sollte ja dann auch aus "TBitmaps" bstehen, was ich jedoch voll doof finde...

bitt egebt mir zu euren lösungen auch beispiele, weil bei mir NIX funzt
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Mehrere Bilder in den RAM laden - Array, ImageList oder

  Alt 12. Jun 2005, 13:52
Nagut, hier noch der Rest: Ich verwende eine globale Variable, STOP, bitte nicht hauen, das ist auch die einzige in allen 10 Units und einfach schnell und unkompliziert .
Delphi-Quellcode:
type
  TBitmapCollection = class
  private
    FBitmapList: TObjectList;
    FNameList: TStringList;
    function GetBitmap(AName: string): TBitmap32;
    procedure LoadGraphicRessources;
  public
    constructor Create;
    destructor Destroy; override;

    procedure Add(ABit: TBitmap32; AName: string);
    function AddNew(AName: string): TBitmap32;

    property Bitmap[AName: string]: TBitmap32 read GetBitmap; default;
  end;

var
  BitmapCollection: TBitmapCollection;

implementation

{ TBitmapCollection }

function TBitmapCollection.GetBitmap(AName: string): TBitmap32;
begin
  Result := TBitmap32(FBitmapList.Items[FNameList.IndexOf(AName)]);
end;

procedure TBitmapCollection.Add(ABit: TBitmap32; AName: string);
begin
  FBitmapList.Add(ABit);
  FNameList.Add(AName);
end;

function TBitmapCollection.AddNew(AName: string): TBitmap32;
begin
  Result := TBitmap32.Create;
  Add(Result, AName);
end;

destructor TBitmapCollection.Destroy;
begin
  FBitmapList.Free;
  FNameList.Free;
  inherited;
end;

constructor TBitmapCollection.Create;
begin
  inherited;
  FBitmapList := TObjectList.Create;
  FNameList := TStringList.Create;
  LoadGraphicRessources;
end;

procedure TBitmapCollection.LoadGraphicRessources;
var
  Stream: TFileStream;
  Alpha: Boolean;
begin
  try
    Stream := TFileStream.Create('Graphics.prr', fmOpenRead);

    LoadPNGintoBitmap32(AddNew('Hugo'), Stream, Alpha);
    LoadPNGintoBitmap32(AddNew('Helmut'), Stream, Alpha);
    LoadPNGintoBitmap32(AddNew('Hannes'), Stream, Alpha);
    LoadPNGintoBitmap32(AddNew('Hannah'), Stream, Alpha);
  finally
    Stream.Free;
  end;
end;

initialization

  BitmapCollection := TBitmapCollection.Create;

finalization

  BitmapCollection.Free;
end.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Master_RC
Master_RC

Registriert seit: 18. Jan 2005
459 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Mehrere Bilder in den RAM laden - Array, ImageList oder

  Alt 12. Jun 2005, 14:30
kewl, THX!

ich werds mal ausprobieren!
Ein Volk ist nur soviel wert, wie es dessen Toten ehrt.
  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 04:14 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