EIn Bild in kleinere Einzelteile aufteilen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Equilibrium

Betreff: EIn Bild in kleinere Einzelteile aufteilen

BeitragDi, Dez 26, 2006 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
so hier erst mal meine ersten gehversuche mit blitzmax:

Code: [AUSKLAPPEN]
'--------------------------Program Settings----------------------------------------------------------------
Strict

Global width:Int=1024
Global height:Int=768

Global mapname:String="test1.bmp"

Graphics width,height

'--------------------------Load Images--------------------------------------------------------------------
Global spr_start_terrain:TImage=LoadImage("maps/"+mapname)


'--------------------------Map Settings-------------------------------------------------------------------
Global width_tile:Int=(width/32)
Global height_tile:Int=(height/32)

Global terrain_part:TImage[width_tile, height_tile]


DrawImage(spr_start_terrain,0,0)
Local i,j
For i=0 To width_tile-1
   For j=0 To height_tile-1
      terrain_part:TImage[i,j] = CreateImage(32,32,0,)
      GrabImage (terrain_part[i,j],i*32,j*32)
   Next
Next


'***************************MAIN-"LOOP"*********************************************************************
Cls


For i=1 To width_tile-1
   For j=1 To height_tile-1
      DrawImage(terrain_part[i,j],i*32,j*32)
   Next
Next
Flip


WaitKey()
End


In blitz3d hat das ganze mit setbuffer imagebuffer, dim-feldern, grabimage etc geklappt... aber hier bekomme ich es irgendwie ned hin... statdessen kommt diese fehlermeldung:

"Unhandled Exception: Attempt to index array element beyond array length"


Meine Frage: Was mache ich falsch? ^^

Danke schon mal für eure Antworten...

Blitzcoder

Newsposter

BeitragDi, Dez 26, 2006 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Meines Wissens geht das mit Images gar nicht. Du solltest dir mal Pixmaps ansehen.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

FOODy

BeitragMi, Dez 27, 2006 0:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Seltsam.
Der Fehler tritt in GrabImage Befehl auf o_O
In SetPixmap um genau zu sein und wenn man dem Debugger glauben kann.

GrabImage scheint ja echt irgendwie kaputt zu sein?

Ersetz das mal mit dem inhalt der ersten For-Schleife:
Code: [AUSKLAPPEN]
Local img:TPixmap = GrabPixmap (i*32,j*32,32,32)
terrain_part[i,j] = LoadImage(img)
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

d-bug

BeitragMi, Dez 27, 2006 0:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum denn bloß mit GrabPixmap? Er hat doch ein Image, welches wiederrum ein Pixmap enthält, richtig? So, nun will er ein 32x32 großes Stück davon in ein neues Image kopieren, richtig?

Code: [AUSKLAPPEN]
MeinNeuesImage:TImage = LoadImage(MeinOriginalImage.Pixmaps[0].Window(MeinX,MeinY,32,32).Copy())


Im obrigen Code kopiere ich einen Teil des ersten Frames (0) der Pixmap des original Images in eine neue Pixmap, die wiederum direkt mit LoadImage in ein neues Image geladen wird. Mit LoadImage ist es nämlich möglich eine Pixmap direkt in ein Image zu laden.

cheers
 

Equilibrium

BeitragSo, Dez 31, 2006 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
erst mal danke vielmals für eure antworten

mit foody's vorschlag hat es geklappt Smile

aus
Code: [AUSKLAPPEN]
MeinNeuesImage:TImage = LoadImage(MeinOriginalImage.Pixmaps[0].Window(MeinX,MeinY,32,32).Copy())

werde ich allerdings ned wirklich schlau :S

Dieses ganze Konzept von Pixmaps ist völlig neu für mich...
Kennt jemand vieleicht ein Tutorial oder sonst eine Übersicht/Einführung in dieses Thema? (darf auch englisch sein)
Wozu eignen sich Pixmaps? Wozu nicht? (ich erinnere mich zbsp. irgendwo gelesen zu haben dass die umwandlung von pixmaps zu bildern rel. langsam sei und sich deshalb nicht für dinge in echtzeit eignet)

In Blitz3d habe ich viel mit "Setbuffer Imagebuffer(img)" gearbeitet... das Bild liess sich dann ja handhaben wie sonst der Backbuffer... man konnte zum Beispiel ein weiteres Bild darauf zeichnen.
In BlitzMax lässt es sich allerdings nicht mehr so realisieren.. man könnte das erste Bild auf den Backbuffer zeichnen dann das zweite darüber und das ganze wieder grabben.... oder aber mit Pixmaps arbeiten (nehme ich mal an ^^)
Wie würdet ihr jetzt diese letzte Aufgabe lösen?

Ja ich sehe schon sind wieder mal viele Fragen... ich hoffe ihr könnt mir möglichst viele davon beantworten ^^

Thx schonmal/nochmal und beste Wünsche fürs neue Jahr

Equilibrium

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group