Probleme mit Grabsprite !!!!
Verfasst: 15.03.2011 16:29
Hallo ihr Lieben ... Da ich lange zeit nicht mit PB gearbeitet habe und mich nun wieder einarbeiten will wollt ich ein kleines schiebepuzzl programmieren...
Nun hab ich folgendes Problem :O Ich lade ein Bild und versuch es mittels Grabsprite in 9 Teile zu unterteilen
doch werden die Sprites zwar geladen aber angezeigt wird nur ein Schwarzes sprite
Ihr müsst den Orginalbild.s pfad anpassen um zu sehen was ich meine
Hier der code--.
vielleicht weiss jemand von euch wieso die funktion Getsprite nicht funktioniert
und wenn ich image\datas als sprite angebe direct gibt es auch keine ausgabe,....
MFG
Darky
Nun hab ich folgendes Problem :O Ich lade ein Bild und versuch es mittels Grabsprite in 9 Teile zu unterteilen


Ihr müsst den Orginalbild.s pfad anpassen um zu sehen was ich meine

Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenWindow(1,0,0,800,600,"",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(1),0,0,800,600,0,0,0)
UseJPEGImageDecoder()
Global ORGINALBILD.l
Global SPR_ARROW.l
Structure Images_
id.l ; Img id
Datas.l ; Preserved sprite
EndStructure
Global NewList Image.images_()
Structure PuzzleFields
x.l
y.l
img.l
org_img.l
Slider.b
EndStructure
Global NewList Puzzle.Puzzlefields()
Declare LoadPuzzle(Image.s="$STANDART")
LoadPuzzle()
ORGINALBILD=LoadImage(#PB_Any,"C:\Users\moni\Pictures\2011-02-12 001\IMG_0011.jpg")
Procedure.l GetSprite(xid.l)
;Debug "CHECK..."
ForEach image()
If image()\id = xid.l
;If IsSprite(image()\id)
;Debug "SUCCESS"
ProcedureReturn image()\datas
;EndIf
EndIf
Next
EndProcedure
Procedure DrawTestGrid()
cl=0
StartDrawing(ScreenOutput())
DrawImage(ImageID(ORGINALBILD),0,0,600,600)
DrawingMode(#PB_2DDrawing_Outlined)
For i = 0 To 400 Step 200
For ii = 0 To 400 Step 200
cl=cl+1
Box(ii,i,199,199,RGB(255,0,0))
CT$=Str(cl)
DrawText(i+(199/2),ii+(199/2),CT$)
Next
Next
DrawText(100,100,Str(GetSprite(2)))
StopDrawing()
EndProcedure
Procedure LoadPuzzle(Image.s="$STANDART")
ct=0
;If Image.s="$STANDART"
StartDrawing(ScreenOutput())
DrawImage(ImageID(ORGINALBILD),600,600)
StopDrawing()
If IsImage(ORGINALBILD)
For i = 0 To 400 Step 200
For ii = 0 To 400 Step 200
ct=ct+1
AddElement(image())
image()\id = ct
image()\datas = GrabSprite(#PB_Any,ii,i,200,200,#PB_Sprite_Memory)
;Debug Str(ii)+" x "+Str(i)
;Debug "....ID >" +Str(\id)
;Debug "....DATA>"+Str(\datas)
;Debug "...CHECK>"+Str(IsSprite(\datas))
AddElement(Puzzle())
Puzzle()\x=ii
Puzzle()\y=i
Puzzle()\org_img= ct
Puzzle()\img = ct
Next
Next
Else
MessageRequester("","Puzzlebild konnte nicht Geladen werden")
EndIf
;EndIf
EndProcedure
;CallDebugger
Debug GetSprite(3)
Repeat
ExamineKeyboard()
FlipBuffers()
ClearScreen(0)
DrawTestGrid()
DisplaySprite(GetSprite(3),10,10)
ev=WindowEvent()
Delay(10)
Until KeyboardReleased(#PB_Key_Escape)
ForEach image()
FreeSprite(image()\datas)
Next
End

MFG
Darky
