Delphi-PRAXiS
Seite 1 von 2  1 2      

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/43652-timage-erzeugen.html)

Speedy123 6. Apr 2005 20:55


TImage erzeugen
 
Hallo Leute,

Ich versuche mich gerade an einem Spiel und brauche dafür Massen an Images, die auch transparent sein sollen. Mit jedem Bild wird Delphi aber spürbar langsamer. Deshalb denke ich, dass sich die Compile-Zeit wesentlich verkürzen lässt, wenn ich die Images erst während des Programmstarts des Spiels erstellen lasse. Ich hab dann so ein bißchen im "Web gebrowsed" und bin auf den Ausdruck TImage.Create gestoßen.

Ich würde gerne wissen, wie das so funktioniert. Muss ich vorher noch irgendwas deklarieren oder so, weil mit den Beispielen in diesem Forum bin ich nicht weit gekommen. Ich habs so probiert:

procedure TForm1.Button1Click(Sender: TObject);
var
Bild: TImage;
begin
Bild:=TImage.Create(Form1);
end;

Beim Punkt zwischen "TImage" und "Create" bringt Delphi unten allerdings schon eine Fehlermeldung.

Was mach ich falsch?

Meine Frage nochmal im Kurzen:

Ich möchte meinem Programm sinngemäß sagen:

-Erstelle ein TImage
-Setze es an die Position(x,y)
-Lade die Bilddatei "DATEINAME.BMP"

SirThornberry 6. Apr 2005 21:08

Re: TImage erzeugen
 
Delphi-Quellcode:
[...]
private
  fImages: Array[0..5] of TImage;
[...]
var LCount: Integer;
begin
  for LCount := 0 to length(fImages) - 1 do
  begin
    fImages[LCount] := TImage.Create(nil);
    fImages[LCount].Parent := Self; //Self also das Form
    fImages[LCount].SetBounds(Links, Oben, Bildbreite, Bildhöhe);
    fImages[LCount].LoadFromFile('Dateiname.bmp');
  end;
und wenn die bilder nicht mehr benötigt werden natürlich noch
Delphi-Quellcode:
fImages[LCount].Free;
also das für jedes bild (bilder müssen ja wieder freigegeben werden

Speedmaster 6. Apr 2005 21:17

Re: TImage erzeugen
 
Warum machst du das mit Images?? Das ist doch Sinnlos, ich würde es entweder mit Canvas machen oder mit OpenGL, Canvas bietet sich dafür eigentlich geradezu an!

Speedy123 6. Apr 2005 21:20

Re: TImage erzeugen
 
Naja, ich bin halt noch Delphi Anfänger.
Mit Canvas haben wir im Wahlfach schon etwas gearbeitet, aber ich weiß nicht, wie ich das in dem Projekt gebrauchen könnte. Mit OpenGL kenn ich mich überhaupt nicht aus.

Speedy123 6. Apr 2005 21:22

Re: TImage erzeugen
 
Also den Quelltext von SirThornberry hab ich schon ungefähr verstanden.

Bloß was bedeutet das nil,self oder Form1 in der Klammer hinter Image.Create? Ich hab alle Varianten schon gesehen.

SirThornberry 6. Apr 2005 21:24

Re: TImage erzeugen
 
das nil ist als owner. du kannst natürlich da auch self angeben (fürs form) oder direkt form1 oder eben keinen owner (nil)

Speedmaster 6. Apr 2005 21:26

Re: TImage erzeugen
 
Zitat:

Zitat von Speedy123
Naja, ich bin halt noch Delphi Anfänger.
Mit Canvas haben wir im Wahlfach schon etwas gearbeitet, aber ich weiß nicht, wie ich das in dem Projekt gebrauchen könnte. Mit OpenGL kenn ich mich überhaupt nicht aus.

Entschuldige die Frage, aber warum zeichnest du die Bilder dann nicht mit Canvas??

Falls du weiter bist empfehle ich dir www.delphigl.com !!

Speedy123 6. Apr 2005 21:36

Re: TImage erzeugen
 
Ich hab mir gedacht, das wär die einfachste Möglichkeit, bilder ins Spiel zu bringen:

Image ins Fenster
Bild reinladen
Position bestimmen
Im Spiel dann nur noch ein- und ausblenden. Aber das werden dann zu viel Images, die er alle Compilieren muss und dafür is er einfach zu langsam.

Wie meinst du, dass es besser wär. Das mit dem Canvas versteh ich nich ganz. In der Schule haben wir das Canvas benutzt, um darauf mit nem Stift zu malen.

Speedmaster 6. Apr 2005 21:39

Re: TImage erzeugen
 
Zitat:

Zitat von Speedy123
Ich hab mir gedacht, das wär die einfachste Möglichkeit, bilder ins Spiel zu bringen:

Image ins Fenster
Bild reinladen
Position bestimmen
Im Spiel dann nur noch ein- und ausblenden. Aber das werden dann zu viel Images, die er alle Compilieren muss und dafür is er einfach zu langsam.

Wie meinst du, dass es besser wär. Das mit dem Canvas versteh ich nich ganz. In der Schule haben wir das Canvas benutzt, um darauf mit nem Stift zu malen.

Du kannst mit Canvas einzelne Bilder Zeichnen ohne die anderen zu überschreiben, und dann kannst du anhand der größe des Bildes und der Anfänglichen Zeichenposition Feststellen ob jemand auf das Bild geklickt hat(TImage.OnClick oder so wobei TImage natürlich die Variable deines Images sein muss).

Speedy123 6. Apr 2005 21:46

Re: TImage erzeugen
 
Heißt das, ich brauche dann nur ein Image, in das ich dann an verschiedenen Stellen der Form ein Bild zeichnen kann?

Ich glaub, ich versteh das noch nicht ganz, wie du das mit dem überschreiben meinst...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.
Seite 1 von 2  1 2      

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