Page 1 sur 3
[Résolu]Comment crée un sprite à partir de GrabImage?
Publié : jeu. 24/sept./2015 18:58
par Micheao
Bonsoir
Aprés avoir charger une image et utiliser GrabImage Comment faire pour transformer le morceau quel'on as découpé pour le transformer en Sprite afin de l'afficher ?
j'ai passé la journée a essayé de comprendre mais pas reussi .
je sais charger mon image et utliser GrabImage mais aprés comment crée le spite à partir de GrabImage ?
merci encore une fois de votre aide
Re: Comment crée un sprite à partir de GrabImage?
Publié : jeu. 24/sept./2015 19:03
par G-Rom
affiche ton image et utilise GrabSprite()
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 6:35
par Micheao
G-Rom a écrit :affiche ton image et utilise GrabSprite()
Merci G-rom coment ça afficher l'image???
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 6:56
par G-Rom
drawimage ? tu peu même le faire directement dans le sprite
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 8:14
par TazNormand
Micheao lit la doc,tout y est expliqué simplement, tu devrais pouvoir t'en sortir.
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 9:20
par Micheao
G-Rom a écrit :drawimage ? tu peu même le faire directement dans le sprite
et comment on fait directement dans le sprite j'ai essayé mais ça pas marcher
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 9:45
par TazNormand
Code : Tout sélectionner
StartDrawing(SpriteOutput(#idSprite))
DrawImage(ImageID, x, y [, Largeur, Hauteur])
StopDrawing()
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 9:51
par Micheao
TazNormand a écrit :Code : Tout sélectionner
StartDrawing(SpriteOutput(#idSprite))
DrawImage(ImageID, x, y [, Largeur, Hauteur])
StopDrawing()
merci mais si on dois decouper 10 images il faut ça à chaque fois?
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 10:03
par TazNormand
Oui, tu peux utiliser une datasection pour stocker le numéro de sprite, les positions x et y et les largeurs, hauteurs de tes sprites à "découper". Ensuite tu boucles sur les valeurs de ta datasection
genre :
Code : Tout sélectionner
DataSection:
MesSprites :
data.i 1,0,0,32,32,2,32,0,32,32,3,64,0,128,64
Ici le premier sprite porte le numéro 1, démarre en 0,0 sur ton image, et a une largeur et une hauteur de 32 pixels.
Le second (numéro 2), démarre en 32,0 sur une largeur et hauteur de 32 pixels.
Le troisième (numéro 3), démarre en 64,0 mais a une largeur de 128 pixels sur une hauteur de 64 pixels.
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 10:14
par Micheao
Merci taz pour ton explication mon code ne marche toujours pas
image à téléchargé ici :
https://www.dropbox.com/s/4wq81lgwgcoj6ap/test.png?dl=0
Code : Tout sélectionner
EnableExplicit
UsePNGImageDecoder()
InitSprite()
InitMouse()
InitKeyboard()
InitMovie()
Enumeration
#Main_Form
#Image_Asset
#Music
EndEnumeration
Global Event_Window,X,Y,ScreenW,ScreenH
OpenWindow(#Main_Form,0,0,800,600,"test image ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Form),0,0,800,600)
LoadImage(#Image_Asset,"test.png")
GrabImage(#Image_Asset,1,0,0,800,600)
StartDrawing(SpriteOutput(1))
DrawImage(ImageID(1), 0 ,0 ,800, 600)
StopDrawing()
Repeat
Repeat
Event_Window=WindowEvent()
Select Event_Window
Case #PB_Event_CloseWindow
End
EndSelect
Until Event_Window=0
DisplaySprite(1, 0, 0)
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 10:33
par falsam
Bonjour Micheao.
Dans ton code tu a
Hors tu n'as pas crée le sprite 1 !
Je m'attendais à une image animée mais apparement pas. Ceci dit je ne suis pas dans ta tête (
et heureusement d'ailleurs. ça doit être un gros b****l chez toi[Mode je déconne hein ?])
J'ai respecté ta logique qui n'est pas la mienne et voila un code qui permet d'afficher ton sprite .
Code : Tout sélectionner
EnableExplicit
UsePNGImageDecoder()
InitSprite()
InitMouse()
InitKeyboard()
InitMovie()
Enumeration
#Main_Form
#Image_Asset
#Music
EndEnumeration
Enumeration
#Sprite
EndEnumeration
Global Event_Window,X,Y,ScreenW,ScreenH
OpenWindow(#Main_Form,0,0,800,600,"test image ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Form),0,0,800,600)
LoadImage(#Image_Asset,"test.png")
GrabImage(#Image_Asset,1,0,0,800,600)
;Ton sprite n'est pas crée
CreateSprite(#Sprite, 800, 600)
StartDrawing(SpriteOutput(#Sprite))
DrawImage(ImageID(1), 0 ,0 ,800, 600)
StopDrawing()
Repeat
Repeat
Event_Window=WindowEvent()
Select Event_Window
Case #PB_Event_CloseWindow
End
EndSelect
Until Event_Window=0
DisplaySprite(#Sprite, 0, 0)
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 10:45
par Micheao
Merci Falsam pour tes conseils
je sais pas faire d'image animée
par contre si on a 3 images par exemple à découpées et à afficher ensuite
faut'il mettre 3 fois en changement le numero du sprite? :
Code : Tout sélectionner
StartDrawing(SpriteOutput(#Sprite))
DrawImage(ImageID(1), 0 ,0 ,800, 600)
StopDrawing()
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 11:30
par TazNormand
Oui, sinon tu vas toujours écraser le même sprite.
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 13:50
par Micheao
Un grand merci pour vos conseils et votre aide
Petite question vous faites coment pour decouper les differentes parties de l'image
j'essaye de découper le cercle bleu de mon image et impossible de le decoupé.
https://www.dropbox.com/s/4wq81lgwgcoj6ap/test.png?dl=0
Re: Comment crée un sprite à partir de GrabImage?
Publié : ven. 25/sept./2015 16:15
par microdevweb
@Micheao,
Pour n'afficher qu'une partie du sprite tu doit utilisé avant DisplaySprite() ou DisplayTransparentSprite() la fonction ClipSprite(), c'est également le principe utilisable pour une animation
petit code exemple simple qui je l'espère t'aidera à comprendre
Code : Tout sélectionner
InitSprite()
InitKeyboard()
; Ouverture fenêtre et screen
OpenWindow(0,0,0,800,600,"Fonction ClipSprite",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,800,600)
; Ici je crée un sprite de 300 px qui va être divisé par après en 3
; et pourra donc affiché 3 sprites différents
CreateSprite(0,300,100)
StartDrawing(SpriteOutput(0))
; Ici un premier Carré Rouge
Box(0,0,100,100,RGB(255, 0, 0))
; Ici un carré jaune
Box(100,0,100,100,RGB(255, 255, 0))
; Ici un carré Bleu
Box(200,0,100,100,$FF901E)
StopDrawing()
X=0
Repeat
Repeat
Event=WindowEvent()
If Event=#PB_Event_CloseWindow
End
EndIf
Until Event=0
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
; Un petit Chrono pour le chagement de carré
If ElapsedMilliseconds()-TimeElapset>=900
X+100
If X>200
X=0
EndIf
; Je découpe le sprite
ClipSprite(0,X,0,100,100)
TimeElapset=ElapsedMilliseconds()
EndIf
ClearScreen(RGB(0,0,0))
DisplaySprite(0,400-150,300-150)
FlipBuffers()
ForEver