[Résolu]Comment crée un sprite à partir de GrabImage?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

[Résolu]Comment crée un sprite à partir de GrabImage?

Message 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
Dernière modification par Micheao le lun. 28/sept./2015 16:47, modifié 1 fois.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Comment crée un sprite à partir de GrabImage?

Message par G-Rom »

affiche ton image et utilise GrabSprite()
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Comment crée un sprite à partir de GrabImage?

Message par Micheao »

G-Rom a écrit :affiche ton image et utilise GrabSprite()
Merci G-rom coment ça afficher l'image???
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Comment crée un sprite à partir de GrabImage?

Message par G-Rom »

drawimage ? tu peu même le faire directement dans le sprite
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Comment crée un sprite à partir de GrabImage?

Message par TazNormand »

Micheao lit la doc,tout y est expliqué simplement, tu devrais pouvoir t'en sortir.
Image
Image
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Comment crée un sprite à partir de GrabImage?

Message 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
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Comment crée un sprite à partir de GrabImage?

Message par TazNormand »

Code : Tout sélectionner

StartDrawing(SpriteOutput(#idSprite))
DrawImage(ImageID, x, y [, Largeur, Hauteur]) 
StopDrawing()
Image
Image
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Comment crée un sprite à partir de GrabImage?

Message 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?
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Comment crée un sprite à partir de GrabImage?

Message 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.
Image
Image
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Comment crée un sprite à partir de GrabImage?

Message 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)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment crée un sprite à partir de GrabImage?

Message par falsam »

Bonjour Micheao.

Dans ton code tu a

Code : Tout sélectionner

StartDrawing(SpriteOutput(1))
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)
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%
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Comment crée un sprite à partir de GrabImage?

Message 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()
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Comment crée un sprite à partir de GrabImage?

Message par TazNormand »

Oui, sinon tu vas toujours écraser le même sprite.
Image
Image
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Comment crée un sprite à partir de GrabImage?

Message 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
Dernière modification par Micheao le ven. 25/sept./2015 18:55, modifié 1 fois.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment crée un sprite à partir de GrabImage?

Message 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 
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre