Seite 1 von 1
Image zeichnen
Verfasst: 06.06.2005 22:24
von MASH
Ich wollte mal wissen wie ich ein Bild zeichenen kann so das es nicht veil speicher wegnimmt aber schnell geladen wird. Dieses Bild liegt in bmp format in der größe 800x600x32 vor. nach einem Tastendruck soll das nöächste kommen. Mein Problem ist wie ich es zeichne habe schon das versucht:
Code: Alles auswählen
OpenScreen(640, 480, 16, "Sprite")
LoadImage(1,"graphics\Image_01.bmp")
StartDrawing(ImageOutput())
DrawImage(1,10,10)
Aber ich komme einfach nicht weiter.
Danke Mark S.
Verfasst: 06.06.2005 22:31
von Green Snake
EIN GRATIS TIPP: mach das image in png format
nocheiner: verwände doch sprites, wenn du sowso nen openscreen hast
Code: Alles auswählen
initsprite()
initkeyboard()
openscreen(800,600,32,"")
loadsprite(0,"Pfad$")
"
"
"
" ; hier kommen alle deine bilder geladen
Bild = 0
repeat
if bild = 0
displaysürite(bild,0,0)
elseif bild = 1
displaysprite(bild,0,0)
;usw
endif
if keyboardreleased(#pb_key_all)
bild = bild + 1
endif
examinkeyboard()
until keyboardpushed(#pb_key_escape)
end
probiers mal so.
ich weis nicht obs geht, und du musst halt evt. fehler ausbessern, da ich den code nicht im editor geschrieben habe
aber ist es das was du meinst?
Verfasst: 06.06.2005 22:42
von Rubiko
examine[/e]keyboard heißt das
und flipbuffers() vergessen
Verfasst: 06.06.2005 22:51
von MASH
Bei deisem CODE hat der Debugger gesgt das er das sprite nicht inintialisiert hat ich dachte das würde mit
"InitSprite() " passieren! EDIT: Wo muss den diese Funktion hin
FlipBuffers() ??
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600,32,"")
LoadSprite(0,"graphics\Image_01.png")
LoadSprite(1,"graphics\Image_02.png")
LoadSprite(2,"graphics\Image_03.png")
LoadSprite(3,"graphics\Image_04.png")
bild = 0
Repeat
If bild = 0
displaysprite(bild,0,0)
ElseIf bild = 1
DisplaySprite(bild,0,0)
EndIf
If KeyboardReleased(#pb_key_all)
bild = bild + 1
EndIf
ExamineKeyboard()
Until KeyboardPushed(#pb_key_escape)
End
Verfasst: 07.06.2005 07:37
von Rubiko
also warte mal....
so gehört er
MASH hat geschrieben:Bei deisem CODE hat der Debugger gesgt das er das
sprite nicht inintialisiert hat ich dachte das würde mit
"InitSprite() " passieren! EDIT: Wo muss den diese Funktion hin
FlipBuffers() ??
Code: Alles auswählen
InitSprite()
InitKeyboard()
usepngimagedecoder()
OpenScreen(800,600,32,"")
LoadSprite(0,"graphics\Image_01.png")
LoadSprite(1,"graphics\Image_02.png")
LoadSprite(2,"graphics\Image_03.png")
LoadSprite(3,"graphics\Image_04.png")
bild = 0
Repeat
If bild = 0
displaysprite(0,50,10)
ElseIf bild = 1
DisplaySprite(1,50,10)
EndIf
If KeyboardReleased(#pb_key_all)
bild = bild + 1
EndIf
ExamineKeyboard()
flipbuffers()
Until KeyboardPushed(#pb_key_escape)
End
guck mal hier
Code: Alles auswählen
LoadSprite(0,"graphics\Image_01.png")
LoadSprite(1,"graphics\Image_02.png")
LoadSprite(2,"graphics\Image_03.png")
LoadSprite(3,"graphics\Image_04.png")
da gibst du ihnen beim ersten parameter eine ID, diese ID muss hier statt Bild rein:
50 ist die X position und 10 die Y, um das bild an einer andren stelle anzuzeigen musst du die positionen verändern.
außerdem hab ich noch den pngimagedecoder() rein... damit du png verwenden kannst
mach lieber mal ein tutorial, auf purearea.net findest du welche
Verfasst: 07.06.2005 10:52
von Lebostein
MASH hat geschrieben:Wo muss den diese Funktion hin FlipBuffers() ??
Alle Zeichenoperationen, wie Bildschirm löschen (Clearscreen), Sprites darstellen (DisplaySprite) oder andere Zeichenbefehle (StartDrawing) werden auf einem "versteckten" Bildschirm ausgeführt. Hat man alles fertig gezeichnet, kann man den versteckten Bildschirm mit dem Befehl "FlipBuffers()" auf den Monitor holen. So wird das Bild in einem Rutsch aktualisiert und man sieht die einzelnen Schritte beim Aufbauen der Grafik nicht. Deshalb muss nach allen Grafikoperationen am Schluss immer ein FlipBuffers() stehen.
Code: Alles auswählen
;1) Initialisieren
InitSprite()
InitKeyboard()
;2) Bildschirm öffnen:
OpenScreen(800,600,32,"")
;3) Sprites laden:
UsePNGImageDecoder()
LoadSprite(0,"graphics\Image_01.png")
LoadSprite(1,"graphics\Image_02.png")
LoadSprite(2,"graphics\Image_03.png")
LoadSprite(3,"graphics\Image_04.png")
;4) Hauptschleife, wird beendet mit ESC
;---------------------------------------------------
Repeat
;---------------------------------------------------
;Tastatur aktualisieren, bevor irgendeine Taste geprüft wird
;*************************************************
ExamineKeyboard()
;Ausgabe der Sprites (Alle Zeichenbefehle werden
;auf einem "versteckten" Bildschirm ausgeführt!!)
;*************************************************
ClearScreen(0, 0, 0)
DisplaySprite(0, 000, 000)
DisplaySprite(1, 120, 300)
DisplaySprite(2, 320, 500)
;Wenn alles gezeichnet, den "versteckten" Bildschirm
;nach vorn holen, erst jetzt werden die Sprites sichtbar.
;*************************************************
FlipBuffers()
;---------------------------------------------------
Until KeyboardPushed(#PB_Key_Escape)
;---------------------------------------------------
Verfasst: 07.06.2005 12:13
von Green Snake
@Rubiko
ich weis... tut mir leid, war müde und musste noch lernen, war ein wunder das ich überhaupt noch an den computer durfte, also nicht böse sein
und wie gesagt, habe den code nicht getestet
Verfasst: 07.06.2005 15:09
von MASH
NEIN bin ich nicht aber ich habe es wenigstens nachvolziehen könnenen. Ein bisschen kenne ich mich ja auch schon auch mein erstes programm habe ich schon geschrieben. Und jetzt wollte ich mein erstes Spiel bauen.
Danke für die ganzen Scripts
EDIT1: Wenn ich text anzeigen möchte dann muss ich den doch auf
anzeigen. Oder???
EDIT2: Der Text wird aber mit der Hintergrundfarbe weis angezeigt und nich tranzparent wie bekomme ich dieses hin?
EDIT3: Hat sich schon erledigt villeicht sollte ich wirklich mal vorher in die Hilfe schauen.