[gelöst] Tilemap mit TCanvas? Oder doch was anderes?
-
- Beiträge: 69
- Registriert: Sa 5. Dez 2015, 20:03
- OS, Lazarus, FPC: Win10 IDE 1.6
- CPU-Target: 64Bit
- Wohnort: Leipzig
[gelöst] Tilemap mit TCanvas? Oder doch was anderes?
Hallo,
ich zerbreche mir seit Wochen eigentlich den Kopf über eineTile Based Map in Lazarus.
Meine Idee ist es die Tiles in 32x32 TImages auf ein Panel zu basteln..Die Tiles sind in ner Klasse definiert und haben ein Onclick Event..Aus der Map, welches ein 2d Array aus meinen Tiles ist, wird lediglich der sichtbare Bereich angezeigt.
Gibt es irgendwelche Verbesserungsvorschläge für TImage als "Container" da ich ja nen Onclick Event gern für jedes Tile hätte, da ich ansonsten das geklickte Tile "ausrechnen" müsste.
ich zerbreche mir seit Wochen eigentlich den Kopf über eineTile Based Map in Lazarus.
Meine Idee ist es die Tiles in 32x32 TImages auf ein Panel zu basteln..Die Tiles sind in ner Klasse definiert und haben ein Onclick Event..Aus der Map, welches ein 2d Array aus meinen Tiles ist, wird lediglich der sichtbare Bereich angezeigt.
Gibt es irgendwelche Verbesserungsvorschläge für TImage als "Container" da ich ja nen Onclick Event gern für jedes Tile hätte, da ich ansonsten das geklickte Tile "ausrechnen" müsste.
Zuletzt geändert von Hartkern am Fr 10. Jun 2016, 17:46, insgesamt 1-mal geändert.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Tilemap mit TCanvas? Oder doch was anderes?
Bin mir nicht sicher ob ich dich richtig verstehe, aber wenn du TImages in einer Gitterstruktur anordnest und für jedes leicht auf das OnClick reagieren willst, dann könntest du dir auch mal TDrawGrid ansehen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 69
- Registriert: Sa 5. Dez 2015, 20:03
- OS, Lazarus, FPC: Win10 IDE 1.6
- CPU-Target: 64Bit
- Wohnort: Leipzig
Re: Tilemap mit TCanvas? Oder doch was anderes?
Das würde eigentlich nur funktionieren wenn die Karte nur so groß ist, wie das Grid oder?
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Tilemap mit TCanvas? Oder doch was anderes?
Hast du mal CopyRect angeschaut ?
http://lazarus-ccr.sourceforge.net/docs ... yrect.html
http://lazarus-ccr.sourceforge.net/docs ... yrect.html
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Tilemap mit TCanvas? Oder doch was anderes?
Hartkern hat geschrieben:Das würde eigentlich nur funktionieren wenn die Karte nur so groß ist, wie das Grid oder?
Ja, aber das ist doch eigentlich kein Problem.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Tilemap mit TCanvas? Oder doch was anderes?
Nicht unbedingt. Man kann das Grid scrollen oder ein Offset relativ zum Grid (oder der sonstigen Komponente). Evtl. müsste man manuell Scrollbars hinzufügen.m.fuchs hat geschrieben:Hartkern hat geschrieben:Das würde eigentlich nur funktionieren wenn die Karte nur so groß ist, wie das Grid oder?
Ja,
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Tilemap mit TCanvas? Oder doch was anderes?
Michl hat geschrieben:Nicht unbedingt. Man kann das Grid scrollen oder ein Offset relativ zum Grid (oder der sonstigen Komponente). Evtl. müsste man manuell Scrollbars hinzufügen.m.fuchs hat geschrieben:Hartkern hat geschrieben:Das würde eigentlich nur funktionieren wenn die Karte nur so groß ist, wie das Grid oder?
Ja,
Achso, mit Größe des Grids ist die Größe des Controls im Form gemeint. Ich meine die Größe aller Zellen, ob jetzt sichtbar oder verdeckt und nur durch Scrollen zu erreichen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 69
- Registriert: Sa 5. Dez 2015, 20:03
- OS, Lazarus, FPC: Win10 IDE 1.6
- CPU-Target: 64Bit
- Wohnort: Leipzig
Re: Tilemap mit TCanvas? Oder doch was anderes?
Im sichtbaren Bereich des Bildschirms meinte ich..ich werd mich dann doch an TImages wagen und diese als Tiles nebeneinander/untereinander legen.
Was mir des Weiteren nen Kopf zerbricht:
wenn ich die Karte, welches lediglich nen 2d Integer Array ist, lade und anhand dieser dann ein 2d Array of Tile erzeuge, sind die Images dann schon quasi fertig geladen und sichtbar, obwohl sie im nicht sichtbaren Bereich der Zeichenfläche rumschwirren? Oder muss ich diese erzeugen wenn sie in meinen sichtbaren Bereich liegen und sobald wenn ich scrolle diese wieder löschen /free?
Sprich prüfen, welcher Ausschnitt aus dem Integer Array sich im sichtbaren Bereich befindet und dann erst erzeugen und löschen?
Was mir des Weiteren nen Kopf zerbricht:
wenn ich die Karte, welches lediglich nen 2d Integer Array ist, lade und anhand dieser dann ein 2d Array of Tile erzeuge, sind die Images dann schon quasi fertig geladen und sichtbar, obwohl sie im nicht sichtbaren Bereich der Zeichenfläche rumschwirren? Oder muss ich diese erzeugen wenn sie in meinen sichtbaren Bereich liegen und sobald wenn ich scrolle diese wieder löschen /free?
Sprich prüfen, welcher Ausschnitt aus dem Integer Array sich im sichtbaren Bereich befindet und dann erst erzeugen und löschen?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2640
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Tilemap mit TCanvas? Oder doch was anderes?
Hartkern hat geschrieben:Im sichtbaren Bereich des Bildschirms meinte ich..
Ok, das ist kein Problem mit dem Grid. Es zeichnet nur die Zellen die sichtbar sind, aber es kümmert sich selbst darum welche Zellen das sind. Zum Beispiel wenn der Benutzer scrollt.
Hartkern hat geschrieben:ich werd mich dann doch an TImages wagen und diese als Tiles nebeneinander/untereinander legen.
Wie gesagt, ich denke dass das Grid die bessere Lösung ist.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de