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
