[Résolu]Comment crée un sprite à partir de GrabImage?
[Résolu]Comment crée un sprite à partir de GrabImage?
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
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
Dernière modification par Micheao le lun. 28/sept./2015 16:47, modifié 1 fois.
Re: Comment crée un sprite à partir de GrabImage?
affiche ton image et utilise GrabSprite()
Re: Comment crée un sprite à partir de GrabImage?
Merci G-rom coment ça afficher l'image???G-Rom a écrit :affiche ton image et utilise GrabSprite()
Re: Comment crée un sprite à partir de GrabImage?
drawimage ? tu peu même le faire directement dans le sprite
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Comment crée un sprite à partir de GrabImage?
Micheao lit la doc,tout y est expliqué simplement, tu devrais pouvoir t'en sortir.
Re: Comment crée un sprite à partir de GrabImage?
et comment on fait directement dans le sprite j'ai essayé mais ça pas marcherG-Rom a écrit :drawimage ? tu peu même le faire directement dans le sprite
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Comment crée un sprite à partir de GrabImage?
Code : Tout sélectionner
StartDrawing(SpriteOutput(#idSprite))
DrawImage(ImageID, x, y [, Largeur, Hauteur])
StopDrawing()
Re: Comment crée un sprite à partir de GrabImage?
merci mais si on dois decouper 10 images il faut ça à chaque fois?TazNormand a écrit :Code : Tout sélectionner
StartDrawing(SpriteOutput(#idSprite)) DrawImage(ImageID, x, y [, Largeur, Hauteur]) StopDrawing()
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Comment crée un sprite à partir de GrabImage?
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 :
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.
genre :
Code : Tout sélectionner
DataSection:
MesSprites :
data.i 1,0,0,32,32,2,32,0,32,32,3,64,0,128,64
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?
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
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)
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Comment crée un sprite à partir de GrabImage?
Bonjour Micheao.
Dans ton code tu aHors 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 .
Dans ton code tu a
Code : Tout sélectionner
StartDrawing(SpriteOutput(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)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Comment crée un sprite à partir de GrabImage?
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? :
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()
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Comment crée un sprite à partir de GrabImage?
Oui, sinon tu vas toujours écraser le même sprite.
Re: Comment crée un sprite à partir de GrabImage?
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
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
Dernière modification par Micheao le ven. 25/sept./2015 18:55, modifié 1 fois.
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Comment crée un sprite à partir de GrabImage?
@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
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
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège