[GELÖST] Leeren Kasten Zeichnen Problem...

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: [GELÖST] Leeren Kasten Zeichnen Problem...

BeitragMo, Sep 26, 2011 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich stehe mal wieder komplett auf'm Schlauch Very Happy Und Zwar folgendes Problem: Für meinen TileMapEditor (Den ich ja neu schreiben wollte, da ich Aktionstiles brauchte Wink ) Brauche ich eine Raster-Einteilung. Nun dachte ich mir, das ich das vorerst mit vielen aneinander liegenden "leeren" (also nicht-solid) Kästen mache. Naja, also den Befehl "Rect" aus BB einfach in "DrawRect" umbenannt, und hinten wie aus BB gewohnt ein ",0" für nicht-solid drangehängt... - Ja denkste Puppe, BlitzMax kennt den letzten Parameter nicht, und gibt prompt n Fehler aus...
Also eben selbst ne Funktion Geschrieben, die "leere" Kästen Zeichnet, so sieht sie aus: BlitzMax: [AUSKLAPPEN]
Function DrawRect2:Int(x, y, w, h)
DrawLine x, y, x + w, y 'Obere Horizontale Linie Zeichnen
DrawLine x + w, y, x + h, y + w 'Rechte Vertikale Linie Zeichnen
DrawLine x + h, y, x + w, y + w 'Untere Horizontale Linie Zeichnen
DrawLine x, y, y + w, y 'Linke Vertikale Linie Zeichnen
End Function
Parameter: x = x Position des Kastens
y = y Position des Kastens
w = Breite des Kastens
h = Höhe des Kastens

Die Funktioniert meines erachtens nach auch wunderbar (hoffe ich Wink ). Nun aber zum eigentlichen Problem: Da ich ja ein Raster brauchte, habe ich noch eine Funktion geschrieben, welche die Kästen in einem Raster anordnet: BlitzMax: [AUSKLAPPEN]
Function DrawGrid:Int(tilesize:Int, sizex:Int, sizey:Int)
startposx:Int = 0
startposy:Int = 0
SetColor(255, 0, 0)
For x = 0 To (sizex * tilesize)
For y = 0 To (sizey * tilesize)
DrawRect2(startposx, startposy, (tilesize + 2), (tilesize + 2))
startposy = startposy + 33 'MARKIERT
Next
startposx = startposx + 33 'MARKIERT
Next
End Function
Parameter: tilesize = Größe (Breite und Höhe) eines Tiles
sizex = Wie viele Kästen Breit?
sizey = Wie viele Kästen Hoch?
(Markierte Zeilen ('MARKIERT) Erklärung: bei "+33" ging ich vorerst von einer Tilesize von 32 x 32 px aus, wird natürlich noch geändert, sobald die Funktion funktioniert)

So, nun aber wirklich zum Problem: Das Raster wird nicht Quadratisch gezeichnet, sondern dreieckig (Ich hoffe das kann man sich jetzt vorstellen). ich mals nochmal auf:
So soll es aussehen: Code: [AUSKLAPPEN]
[][][][][]
[][][][][]
[][][][][]
[][][][][]
[][][][][]


Und so sieht es aus: Code: [AUSKLAPPEN]
[]
[][]
[][][]
[][][][]
[][][][][]
wobei "[]" für einen "leeren" kasten steht.

Wie bekomme ich das also hin, das die Kästen in einem Quadrat angeordnet werden?

Es sei noch gesagt, das ich das ganze in einem Canvas in einem mit der MaxGUI erstellten Fenster male.

Ach ja, und noch schnell ne Frage hinterher: Kann mir wer sagen, wie ich diese Tiles mit der Maus zeichnen lassen kann, also wie in meinem "TileMapEditor v.1.6"? Ich habe den Quellcode von dem Programm leider gelöscht Embarassed Und kann mich auch nicht mehr daran erinnern, wie "Eingeproggt" das gelöst hat (Danke nochmals an "Eingeproggt", welcher so nett war und mir den Code postete Wink )

Und gleich noch eine Frage: Wie kann man scrollbare Canvases erstellen? als wenn die TileMap z.b.: 500 x 500 tiles groß sein soll, aber vom Canvas nur 20 x 20 angezeigt werden können, wie kann ich dann solche scroll-dinger erstellen, das die auch funktionieren?

so, das wars erstmal meinerseits,
mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am Di, Sep 27, 2011 21:21, insgesamt einmal bearbeitet

BlitzMoritz

BeitragMo, Sep 26, 2011 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach DrawRect2() doch lieber so und zwar mit DrawRect statt DrawLine - soll schneller sein ...
außerdem muss bei DrawGrid() zwischenzeitlich der startposy-Wert wieder auf Null gesetzt werden.
Ansonsten ist die DrawGrid-Funktion nicht so hilfreich, weil du sie nicht flexibel genug handhabst: Du setzt viele Dinge (willkürlich) innerhalb der Funktion fest (z.B. Abstand, Startposition, Farbe), anstatt sie als Argumente der Funktion zu übergeben. Außerdem verquickst du merkwürdig die Anzahl der tiles mit x und y, tilesize, sizex und sizey. In deiner Funktion ist 33 der Abstand zwischen den Tiles und tilesize die quadratische Größe des Rechtecks. Wolltest du das so? Du lässt x bis sizex * tilesize und y bis sizey * tilesize laufen! In meinem Code-Beispiel werden dabei 480000 Rechtecke gezeichnet. Wolltest du das so? Ich würde da noch einmal nachdenken, was der Unterschied zwischen Zeichenpositionen und Laufvariablen ist, die die Anzahl der Rechtecke durchzählen.
BlitzMax: [AUSKLAPPEN]
Graphics 800,600

DrawGrid(20, 40,30)
Flip
WaitKey()


Function DrawRect2:Int(x, y, w, h)
DrawRect x, y, w, 1 'Obere Horizontale Linie Zeichnen
DrawRect x+w, y, 1, h 'Rechte Vertikale Linie Zeichnen
DrawRect x, y+h, w, 1 'Untere Horizontale Linie Zeichnen
DrawRect x, y, 1, h 'Linke Vertikale Linie Zeichnen
End Function


Function DrawGrid:Int(tilesize:Int, sizex:Int, sizey:Int)
startposx:Int = 0
startposy:Int = 0
SetColor(255, 0, 0)
For x = 0 To (sizex * tilesize)
startposy = 0 'WICHTIG!
For y = 0 To (sizey * tilesize)
DrawRect2(startposx, startposy, (tilesize + 2), (tilesize + 2))
startposy = startposy + 33 'MARKIERT
Next
startposx = startposx + 33 'MARKIERT
Next
End Function
  • Zuletzt bearbeitet von BlitzMoritz am Mo, Sep 26, 2011 21:57, insgesamt 5-mal bearbeitet
 

CO2

ehemals "SirMO"

BeitragMo, Sep 26, 2011 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal danke für die Antwort!

Daran, das Drawrect auch Rechtecke zeichnen kann, die nur 1 px breit sind habe ich gar nicht gedacht Very Happy Das machts dann auch einfacher, wenn man die breite der linien bestimmen will Very Happy Ist so aufgenommen worden in den Code Wink

Aber jetzt noch ne Frage zu diesem "Y Position immer wieder auf 0 setzen": Warum? Very Happy Die Y Position ist doch die verschiebung in der breite oder nicht? wenn ich den immer wieder auf 0 setze, dann werden ja die kästen immer wieder auf die gleiche linie gemalt... Oder stehe ich gerade ein wenig auf dem schlauch Wink "Ich kann das gerade logisch nicht erfassen" (wie ein lehrer bei uns immer sagt Very Happy)

EDIT: Das war ja vorerst nur die "Versuchs" - Funktion. Da wird sehr wahrscheinlich noch viel dran geändert, bevor sie ins Programm aufgenommen wird Wink

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

BlitzMoritz

BeitragMo, Sep 26, 2011 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
CO2 hat Folgendes geschrieben:
Aber jetzt noch ne Frage zu diesem "Y Position immer wieder auf 0 setzen": Warum?

Vergiss nicht, du verquickst zwei Schleifen ineinander und zählst startposx und startposy immer weiter.
Was passiert denn als erstes? startposx bleibt bei 0, während startposy hochzählt.
Wenn startposy (bzw. eher y) am Ende angelangt ist, zählt startposx eins weiter.
Und wo ist in diesem Moment startposy? Richtig - bereits weit fortgeschritten.
Wenn also die innere Schleife verlassen wurde und die äußere mit startposx wieder eins weiterzählt, muss startposy wieder auf 0 starten,
ein 3x3 grid würde (von Links nach Rechts) dann so gemalt:

X__ X__ X__ XX_ XX_ XX_ XXX XXX XXX
___ X__ X__ X__ XX_ XX_ XX_ XXX XXX
___ ___ X__ X__ X__ XX_ XX_ XX_ XXX

Ansonsten teste doch mal das hier mit und ohne "startposy = 0":
BlitzMax: [AUSKLAPPEN]
For x = 0 To 3
'startposy = 0 'WICHTIG!
For y = 0 To 3
Print "startposx = " + startposx + ", startposy = " + startposy
startposy = startposy + 1
Next
startposx = startposx + 1
Next

Außerdem habe ich im obigen Post noch einige Hinweise nacheditiert - lies es dir bitte noch mal durch.
  • Zuletzt bearbeitet von BlitzMoritz am Mo, Sep 26, 2011 22:02, insgesamt 3-mal bearbeitet

BladeRunner

Moderator

BeitragMo, Sep 26, 2011 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Scrollbare Canvas:
Dafür brauchst Du 'Slider', die findest Du ebenfalls in MaxGUI. Unter Createslider findest Du ein Beispiel dazu.
Das Umrechnen der erhaltenen Werte auf dein Canvas liegt in deiner Verantwortung.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

CO2

ehemals "SirMO"

BeitragMo, Sep 26, 2011 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Achso, dann habe ich das mit dem auf 0 setzen verstanden.

Zitat:
In meinem obigen Beispiel werden dabei 480000 Rechtecke gezeichnet
Achja, entschuldigung: Das soll natürlich nicht so Wink . ich muss ja noch pro schleifendurchlauf die Zählervariable (in diesem fall x und y) je (erstmal*) "+33" rechnen.

*Wie oben geschrieben: Wird geändert, sobald die funktion funktioniert Wink

Den anderen Hinweis: siehe EDIT im obigen Post Wink

EDIT: Sorry Bladerunner, habe dich übersehen Wink . In dem Tutorial, was ich momentan lesen (Das von "Assari") werden nur die vertikalen Scrollbars erklärt, nicht aber die horizontalen. Wie kann ich horizontale Scrollbars erstellen?

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

BladeRunner

Moderator

BeitragMo, Sep 26, 2011 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Das steht in der Hilfe zur Maxgui. Du steuerst dass per Flag. Da gibt es ein Flag für vertikale und eins für horizontale Slider.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Midimaster

BeitragDi, Sep 27, 2011 8:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ist ein schwerer Denkfehler in deiner Grid-Funktion. Jedesmal, wenn Du sie aufrufst, werden viel zu viele Rechtecke gemalt. feststellen kannst Du es mit einen Zähler Z%:

BlitzMax: [AUSKLAPPEN]
Graphics 800,600
Global z%, Zeit%
zeit%=MilliSecs()

DrawGrid(20, 10,10)
Print "Zeitverbrauch= " + (MilliSecs()-zeit)
Print "gemalte Rects= " + z
Flip
WaitKey()


Function DrawRect2:Int(x, y, w, h)
DrawRect x, y, w, 1
DrawRect x+w, y, 1, h
DrawRect x, y+h, w, 1
DrawRect x, y, 1, h
z=z+1 ' hier den Zähler zählen lassen
End Function


bei eine 10x10 Feld sollten gerade mal 100 rauskommen, es sind aber 40401!

Der Fehler liegt in der For/Next-Schleife. Mach es besser so:

BlitzMax: [AUSKLAPPEN]

Function DrawGrid:Int(tilesize:Int, sizex:Int, sizey:Int)
SetColor(255, 0, 0)
For x = 0 To SizeX
For y = 0 To SizeY
DrawRect2 X*TileSize+1, Y*TileSize+1, (tilesize - 2), (tilesize - 2)
Next
Next
End Function
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

d-bug

BeitragDi, Sep 27, 2011 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne jetzt groß rumzunörgeln...

Geht's hier lediglich darum, dass der Herr CO2 selbst auf eine gescheite Lösung kommen soll? Dann sollte man ihm nämlich auch direkt in die bessere Richtung schubsen, statt ihm seine Performance-Bremse auch noch zu verbessern... Smile

Wäre eine Implementierung der DrawGrid Geschichte nicht sinnvoller, wenn man DrawLine mit zwei separaten Schleifen benutzt statt sich eine unglaublich unoptimierte Rechteck-Funktion aus 4 Rechtecken hundertfach auf den Schirm pinseln zu lassen? (Ich bekomme Hautgänse, wenn ich sowas sehe)

BlitzMax: [AUSKLAPPEN]
Function DrawGrid(tilesize:Int, sizeX:Int, sizeY:Int)
For Local x:Int = 0 To (sizeX / tilesize)
DrawLine(x*tilesize,0,x*tilesize,sizeY)
Next
For Local y:Int = 0 To (sizeY / tilesize)
DrawLine(0, y*tilesize, sizeX, y*tilesize)
Next
End Function

(mal eben aus der hohlen Hand gezaubert (ohne die IDE zu bemühen))
 

CO2

ehemals "SirMO"

BeitragDi, Sep 27, 2011 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal wieder danke für die Antworten.

@ BladeRunner:
Und die Flags werden wie gewohnt hinter dem "Style" - Parameter aufgeführt?
(Die Flags sind (Habs gerade nochmal nachgeguckt): SLIDER_HORIZONTAL [Horizontaler Slider] und SLIDER_VERTICAL [Vertikaler Slider])

@ Midimaster:
Zitat:
Jedesmal, wenn Du sie aufrufst, werden viel zu viele Rechtecke gemalt.
Das liegt daran, das anstatt 4 Linien pro Kasten zu zeichnen, 4 Rechtecke gezeichnet werden. Der hinweis es so zu machen kam von "BlitzMoritz" (Zitat:
Mach DrawRect2() doch lieber so und zwar mit DrawRect statt DrawLine - soll schneller sein ...
)

Danke für den Code, aber eine Frage dazu: Wofür steht das "X" bzw. das "Y" in der For Schleife? bzw. wo ist die deklariert - und was enthält sie?

@ d-bug:
Zitat:
wenn man DrawLine mit zwei separaten Schleifen benutzt
Daran habe ich gar nicht gedacht... wäre auch einfacher und effizienter (Da Linien nicht gezeichnet werden, die sowieso "überzeichnet" werden. So habe ich bei meiner vorherigen Funktion immer mindestens einen Kasten gehabt, welcher eine linie eines anderen kastens schnitt)

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Midimaster

BeitragDi, Sep 27, 2011 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
neenee...

du hast wirklich 40401 DrawRect2-Aufrufe, also über 160.000 Rechtecke!

das kommt daher, dass du die Schleifen in DrawGrid pro Pixel und nicht pro Tile aufrufst:

Angenommen SizeX=10
BlitzMax: [AUSKLAPPEN]
	For x = 0 To (sizex * tilesize)
sind halt schon 10*32 Aufrufe und nicht nur 10 Stück. waarecht müssen aber ja nur 10 und nicht 320 rechtecke gezeichnet werden!

Die X und Y in meiner Funktion stehen für die Tiles-Spalten und -Reihen. Vielleicht wäre es durchsichtiger, für Dich, wenn man sie i ud j nennen würde?

i und j laufen jeweils nur von 0 bis 10 (wenn wir SizeX mal mit 10 annehmen):

BlitzMax: [AUSKLAPPEN]
Function DrawGrid:Int(tilesize:Int, sizex:Int, sizey:Int)
SetColor(255, 0, 0)
For i = 0 To SizeX
For j = 0 To SizeY
DrawRect2 i*TileSize+1 , j*TileSize+1, (tilesize - 2), (tilesize - 2)
Next
Next
End Function

für die Zeile
BlitzMax: [AUSKLAPPEN]
DrawRect2 i*TileSize+1 , j*TileSize+1, (tilesize - 2), (tilesize - 2)

ergeben sich dann die Malpositionen:
Code: [AUSKLAPPEN]
Bei i=   Malpos i*TileSize+1
1          33
2          65
3          97
...


So wie DBug es zeigt, kannst du es auch machen, um ein leeres Rechenblatt zu zeigen. Du wirst aber letzendlich nicht um meine Funktion herumkommen, wenn die Tiles nicht mehr leer sind, sondern wirklich auch gezeichnet werden müssen:

angenommen Feld[i,j] enthält die Information, was auf jedem Tile zu sehen sein soll und BildGras ist ein 32x32 Grasbild
BlitzMax: [AUSKLAPPEN]
Function DrawGrid:Int(tilesize:Int, sizex:Int, sizey:Int)
For i = 0 To SizeX
For j = 0 To SizeY
If Feld[i,j]=GRAS_TYP
DrawImage GrasBild, i*TileSize+1 , j*TileSize+1
EndIf
Next
Next
End Function
 

CO2

ehemals "SirMO"

BeitragDi, Sep 27, 2011 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort!

Zitat:
die Schleifen in DrawGrid pro Pixel und nicht pro Tile aufrufst:
Ich habe ja gedacht, das ich das mit "startposx + 33" und "startposy + 33" aufgehoben hätte Wink

Zitat:
Vielleicht wäre es durchsichtiger, für Dich, wenn man sie i ud j nennen würde?
Ich war nur ein wenig verwirrt, weil du es so geschrieben hattest:
BlitzMax: [AUSKLAPPEN]
For x = 0 To SizeX 
For y = 0 To SizeY
DrawRect2 X*TileSize+1, Y*TileSize+1, (tilesize - 2), (tilesize - 2)
Next
Next
Und da dachte ich, das sich "X" (In der For - Schleife) und "x" (Oben im Schleifen - Kopf) - das selbe natürlich mit "Y" und "y" - unterscheiden, deshalb habe ich gedacht, das das andere Variablen wären...

Zitat:
wenn die Tiles nicht mehr leer sind
Ich hatte geplant, das das "nur" ein Raster ist, voran man sich orientieren kann. die Tiles werden darein gezeichnet (deshalb auch 33 x 33 px große Kästen (vorerst) und nicht 32 x 32 px) Wink

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

d-bug

BeitragDi, Sep 27, 2011 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Midimaster hat Folgendes geschrieben:
So wie DBug es zeigt, kannst du es auch machen, um ein leeres Rechenblatt zu zeigen. Du wirst aber letzendlich nicht um meine Funktion herumkommen, wenn die Tiles nicht mehr leer sind...


Da geb ich dir recht, Midimaster, allerdings hat das in dem Sinne nichts mehr mit einem Grid zu tun, sondern ist die standard Darstellungsroutine für ein Tileset. Ich denke aber, da sind wir recht frei in der Namensgebung. Da es sich hier aber um einen Canvas in einem Editor handelt, der hoffentlich nicht in realtime aktualisiert wird, spricht wohl nichts dagegen erst das Tileset zu zeichnen und darüber dann das Grid. So machte ich es zumeist. So kann man das Grid mal schnell ausblenden, wenn es einen nervt. (Sollte jemand den Link geklickt haben: Mit Klick auf den Raster-Button lässt sich das Grid einfach ausblenden... Btw: Der Editor ist schon Jahre alt und NEIN, ich arbeite nicht wieder an ChaosFrog Razz)

Basiert das ganze eigentlich auf DX oder OpenGL, CO2? Wenn es OpenGL ist wüsste ich dir zumindest eine schnellere Funktion für dein DrawRect2 anzubieten.
 

CO2

ehemals "SirMO"

BeitragDi, Sep 27, 2011 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort.

Zitat:
Tileset zu zeichnen und darüber dann das Grid
Aber wie teilst du das den ein? weil eine linie im grid ist ja schon mindestens 1 px breit, d.h.: du musst die tilemap "versetzt" zeichnen. Wie machst du das? oder malst du das grid einfach so über die tilemap, ohne die tiles jeweils um die breite einer linie zu verschieben?

Zitat:
(Sollte jemand den Link geklickt haben:
Wie hast du denn die Zahlen oben und an der seite hingekriegt? Wink

Zitat:
Basiert das ganze eigentlich auf DX oder OpenGL
Da bin ich mir noch nicht im klaren: Wenn ich den Editor anbiete, soll er möglichst crossplatform sein (was für OpenGL spricht), was allerdings ein Problem ist, da ich es nur unter Windows kompilieren kann.
Andererseits weiß ich noch nicht, ob ich ihn nur selber verwende, wenn ja, nutze ich DX.

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

d-bug

BeitragMi, Sep 28, 2011 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, es war im wesentlichen ziemlich Schnuppe, dass ich einen Pixel des Tiles überzeichne. Meistens hab ich das Raster eh ausgeblendet, wenn ich was sehen wollte. Da würde ich es als ziemlich störend empfinden, wenn die Tiles dann alle einen Pixel auseinander liegen.

Die Zahlen sind ein Cocoa Gadget. Ich habe für den Editor nicht blankes MaxGUI verwendet sondern mein eigenes Modul namens CocoaExt. Deswegen würde dieser Editor auch niemals auf Windows oder Linux laufen sondern nur auf OSX. Im kurzen Sinne, frage ich beim Schollen des Canvases den Abstand zwischen sichtbarem Bereich und Ursprung der Map ab und Teile diesen dann durch die Tile-Größe und trage das Ergebnis dann als Gadget-Text in das Lineal ein. Bei jedem Step wird ab da noch um 1 hochgezählt und das war es dann auch. Da der Editor nur in Tile-Größe-Schritten scrollt kann man das so machen.

Naja, ich denke es wird auch für DX eine DrawRect Version realisierbar sein, die ähnlich des OpenGL Krams ist.
So würde das in OpenGL ungefähr aussehen, ohne Berücksichtigung von Rotation und Skalierung:
Code: [AUSKLAPPEN]
glBegin(GL_LINE_LOOP)   
   glVertex2f(x, y)
   glVertex2f(x + width, y)
   glVertex2f(x + width, y + height)         
   glVertex2f(x, y + height)
glEnd()
 

CO2

ehemals "SirMO"

BeitragMi, Sep 28, 2011 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort.

Zitat:
wenn die Tiles dann alle einen Pixel auseinander liegen.
Stimmt, also einfach ohne tile-versetzung das Raster zeichnen und fertig.

Zitat:
sondern nur auf OSX
Okay, dann hat sich die Frage wie das Codetechnisch aussehen würde schon geklärt, da der Editor bei mir auch Windows läuft Sad

Zitat:
So würde das in OpenGL ungefähr aussehen, ohne Berücksichtigung von Rotation und Skalierung:
Ich werde drauf zurückkommen, wenn ich mich entschieden haben, was ich machen will. Very Happy

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group