Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TImage erzeugen (https://www.delphipraxis.net/43563-timage-erzeugen.html)

Speedy123 5. Apr 2005 20:59


TImage erzeugen
 
Hallo Leute,

ich hab da ein Problem, das für erfahrenere Delphi Programmierer eigentlich kein Problem sein dürfte.

Ich versuche gerade ein Spiel zu programmieren. Dafür brauch ich allerdings Massen an Images. Ich hab jetzt auch schon ein Paar eingefügt und gemerkt, dass mein Rechner beim Compilieren mit jedem Bild spürbar langsamer wird. Da ich die Bilder aber teilweise transparent möchte, bleibt mir wohl nichts anders, als doch mit BMPs zu arbeiten.

Ich hab mir jetz überlegt, dass das erstellen der EXE doch viel schneller von statten geht, wenn sich die Images erst beim Starten des Programmes laden würden. Ich hab dann ein bißchen im "Web gebrowsed" und bin auf den Ausdruck TImage.Create gestoßen. Kann es sein, dass das der Schlüssel für mein Problem ist?

Wenn ja würde ich gerne wissen, wie man das dann richtig programmiert (vielleicht mit nem kleinen Beispielquelltext), weils bei mir irgendwie nich so hinhaut.

Also nochmal konkret meine Frage:

Wie sage ich dem Programm sinngemäß:

- Erstelle ein Image mit dem Namen 'IMAGENAME'
- Lade in das Image das Bild...
- Setze das Image an die Stelle(x,y)

Bin um Antwort furchtbar dankbar.

CalganX 5. Apr 2005 21:04

Re: TImage erzeugen
 
Hi,
was du willst ist das dynamische Erstellen von Komponenten.
Das geht ungefähr so:
Delphi-Quellcode:
var
  NewImage: TImage;
begin
  // Komponente erstellen
  NewImage := TImage.Create(Form1);

  // Wichtige Komponenten-Eigenschaften setzen
  NewImage.Name := 'NewImageName'; {Namen}
  NewImage.Parent := Form1; {Formular, oder übergeordnete Komponente}
  NewImage.Top := 10; {Abstand in Pixeln von oben}
  NewImage.Left := 20; {Abstand in Pixeln von links}
  NewImage.Picture.LoadFromFile('yourpicture.jpeg'); {Bild aus Datei laden}
  NewImage.Visible := true; {TImage anzeigen}
end;
So in etwa sollte das Ganze funktionieren. :)
Hope that helps,
Chris

Nikolas 5. Apr 2005 21:05

Re: TImage erzeugen
 
etwa so:
Delphi-Quellcode:
List: array of Timage; // Du wirst viele brauchen...

begin

List[o].create:= TImage.Create;
List[o].parent:= DeinForm;
List[o].Name := ImageFuenf;
List[o].x    := 3;
List[o].y    := 7;
List[o].loadfromfile(bla.bmp); //<- da bin ich mir nicht ganz so sicher, frag mal F1

Pr0g 5. Apr 2005 21:05

Re: TImage erzeugen
 
Hast du mal überlegt die ganzen Bilder vielleicht in einzelne TBitmaps zu speichern und dann auf ein TBitmap zu vereinen, welches du im TImage anzeigst? Oder direkt DelphiX zu nutzen, je nachdem was du machen willst?

MfG Pr0g

DP-Maintenance 6. Apr 2005 06:22

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Neuen Beitrag zur Code-Library hinzufügen" nach "VCL-Komponenten und Controls" verschoben.
In "Neue Beitrag zur Code-Library..." bitte keine Fragen posten. Danke

Boombuler 6. Apr 2005 07:08

Re: TImage erzeugen
 
Wenn du die Mengen von Bildern nicht direkt in nem Verzeichnis bei deinem Programm bunkern willst würde ich dir noch vorschlagen dir mal Resources anzusehn und evtl die ganzen bilder entweder über Resources in deine Exe einzubinden oder eine Resource-DLL zu verwenden.

Allerdings wenn es wirklich so viele sind mach dir schon mal gedanken ob das Spiel nachher wirklich flüssig läuft...

Greetz
Boombuler

jim_raynor 6. Apr 2005 07:12

Re: TImage erzeugen
 
Vielleicht noch ne Alternative: DirectX oder Delphi. Für ein Spiel ideal. Mit normalen TImage oder TBitmap wirst du keine Freude haben, weil es viel zu langsam ist. Allerdings ist es natürlich etwas schwieriger mit DirectX (oder alternativ natürlich auch OpenGL). Aber dafür ist die Geschwindkeit nicht zu schlagen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 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