AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Mehrere TImages mit einer Procedure erstellen

Mehrere TImages mit einer Procedure erstellen

Ein Thema von Benni0811 · begonnen am 3. Okt 2016 · letzter Beitrag vom 11. Okt 2016
Antwort Antwort
Seite 1 von 2  1 2   
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Mehrere TImages mit einer Procedure erstellen

  Alt 3. Okt 2016, 20:25
Hallo Zusammen,

Ich programmiere gerade ein Spiel, in dem man sich seine eigen Stadt aufbauen kann. Das ganze auf geschieht auf einem Gitter mit über 500 Quadratischen Feldern. Um nicht für jedes einzelne Feld ein TImage von Hand erstellen zu müssen, habe ich mir überlegt diese erst im Programm zu erstellen. Jetzt meine Frage:
Kann man mit einer Prozedure mehrere TImages erstellen, ohne diese vorher einzeln im Var-Bereich zu deklarieren? den Namen der Bilder würde ich über eine Stringvariable festlegen.

Grüße
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.770 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 3. Okt 2016, 20:27
Übergabe eines Arrays?
Markus Kinzler
  Mit Zitat antworten Zitat
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 3. Okt 2016, 20:32
Wie würde das aussehen?

Ich programmiere erst seit 2 monaten mit Pascal und habe noch nie arrays benutzt und mich auch noch nie damit beschäftigt wie diese funktionieren.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 3. Okt 2016, 21:59
Dann ist das jetzt die Gelegenheit sich damit zu beschäftigen. Hilfe findest du dazu hier im Forum und auf den einschlägigen Tutorialseiten im Internet.

Aber für die Zukunft: Eine Objektliste mit Objekten, die das TImage und weiter Eigenschaften beinhalten, wäre hier wohl geeigneter.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.381 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 3. Okt 2016, 22:12
statt einem Array

Delphi-Quellcode:
type
  TMyImagesArray = array of TImages; // TMyImagesArray = TArray<TImages>;

function GibMirWasDasGarantiertInEinemSpeicherleckEndet: TMyImagesArray;
// oder
procedure GibMirWasDasGarantiertInEinemSpeicherleckEndet(var ImagesList: TMyImagesArray);
Besser eine Liste mit OwnsObjects=True
Delphi-Quellcode:
var
  Liste: TObjectList<TImages>;

procedure GibMirWas(ImagesList: TObjectList<TImages>);

PS: Gibt es kein 2DBox Box2D mehr im GetIt?
Bei Google suchendelphi 2d game engine

[edit] Wo kommt Luckie plötzlich her
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 3. Okt 2016 um 22:14 Uhr)
  Mit Zitat antworten Zitat
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 4. Okt 2016, 18:44
Danke für die Antworten, ich habe jetzt eine Objectlist mit verschiedenen Bildern. Ich habe auch herausgefunden, dass man die Bilder mit der Funktion GetItem aufrufen kann. Wie Kombiniere ich das jetzt mit der Erstellung neuer Bilder mit Einer Stringvariable als Bildnamen und unterschiedlichen Koordinaten?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.766 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 4. Okt 2016, 18:59
Hallöle...
Schau dir mal TDictiorary bzw. TObjectDictonary an. Dann macht du dir eine Datenklasse mit dem Bild und den Eigenschaften welche du möchtest. Dann hast du einen KEY welcher das Bild identifiziert... fertsch.
http://docwiki.embarcadero.com/Libra...jectDictionary

Beim Arbeiten mit Listen kannst über den Index zugreifen. Bei generischen Listen kriegst du das entsprechende Objekt zurück.

Arbeite dich mal durch. Wenn du fragen hast kann ich notfalls ein Beispiel machen.

Geändert von haentschman ( 4. Okt 2016 um 19:17 Uhr)
  Mit Zitat antworten Zitat
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 5. Okt 2016, 14:10
Okay ich habe folgende Fragen:

Ich habe mir eine Klasse erstellt mit Eigenschaften des Bilds(Mithilfe von Google). Die sieht so aus:
Code:
type
    TBild = Class
    private
      x,y,Width,Height:Integer;
      Name:String;
    public
      Constructor Init(x,y,Width,Height:Integer; Name:String);
End;
Wie kann ich dem Bild eine Bitmap zuweisen?
Wie übertrage ich die Daten auf ein neues Bild?
Ist die Klasse überhaupt richtig?

Und wie Kombiniere ich das ganze mit der Objectlist?

Wie du siehst bin ich damit etwas überfordert, ich wäre dir für ein kleines Beispiel sehr dankbar.

Edit: Habe gerade gemerkt, dass beim kompilieren die Fehlermeldung: "[dcc32 Fehler] Unit1.pas(14): E2065 Ungenügende Forward- oder External-Deklaration: 'TBild.Init'" erscheint.

Geändert von Benni0811 ( 5. Okt 2016 um 14:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.766 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 5. Okt 2016, 14:31
Hallo...

Knapp daneben...

Ich zeige es anhand eines Beispieles:
Delphi-Quellcode:
TBlubb = class // der Klassenname ist egal
  private
    FImageContent: TBitmap;
    FImageHeight: Integer;
    FImageName: string;
    FImageWidth: Integer;
  public
    property ImageName: string read FImageName write FImageName; // der Name des Bildes für z.b. die Anzeige etc.
    property ImageContent: TBitmap read FImageContent write FImageContent; // das eigentliche Bild incl. der Originalhöhe etc.
    property ImageHeight: Integer read FImageHeight write FImageHeight; // Höhe des Bildes vom Original abweichend -> muß gesetzt werden
    property ImageWidth: Integer read FImageWidth write FImageWidth; // Breite des Bildes vom Original abweichend -> muß gesetzt werden
    // und so weiter
  end;
Du mußt dir das Tutorial aus dem DT anschauen. Du mußt lernen was Klassen sind, was Propertys sind und wie man das verwendet. Sonst kommst du auf keinen grünen Zweig.
https://www.delphi-treff.de/tutorial...phi-crashkurs/ ...Klassen ab Seite 8

Wenn du das verstanden hast, können wir mit der Objectliste weitermachen.
PS: Wenn du Klassen verstanden hast, wirst du auch die Vorteile von Klassen erkennen.

Geändert von haentschman ( 5. Okt 2016 um 14:40 Uhr)
  Mit Zitat antworten Zitat
Benni0811

Registriert seit: 26. Sep 2016
25 Beiträge
 
Delphi 10.1 Berlin Starter
 
#10

AW: Mehrere TImages mit einer Procedure erstellen

  Alt 10. Okt 2016, 17:08
Ich habe den Crashkurs jetzt gelesen und außerdem der Klasse die Eigenschaften ImageTop und ImageLeft hinzugefügt:
Delphi-Quellcode:
TBild = Class
    private
      FImageContent: TBitmap;
      FImageHeight: Integer;
      FImageName: string;
      FImageWidth: Integer;
      FImageTop: Integer;
      FImageLeft: Integer;
    public
      property ImageName: string read FImageName write FImageName;
      property ImageContent: TBitmap read FImageContent write FImageContent;
      property ImageHeight: Integer read FImageHeight write FImageHeight;
      property ImageWidth: Integer read FImageWidth write FImageWidth;
      property ImageTop: Integer read FImageTop write FImageTop;
      property ImageLeft: Integer read FImageLeft write FImageLeft;
    End;
Außerdem habe ich in einer Procedure den Eigenschaften verschiedene Werte zugewiesen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var Test:TBild;
begin
    Key:='Feld'+IntToStr(Feldx)+','+IntToStr(Feldy);
    Test:=TBild.Create;
    Test.FImageName:=Key;
    Test.FImageHeight:=Feldsize;
    Test.FImageWidth:=Feldsize;
    Imagelist1.GetBitmap(0,Test.FImageContent);
end;
Feldx und Feldy sind Variablen zur bestimmeug der Position des Feldes, Feldsize ist die Konstante die die Größe der Felder festlegt.

Wie kombiniere ich das jetzt mit der TObjectlist?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 16:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf