découpage de sprites à la volée

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Anonyme

découpage de sprites à la volée

Message par Anonyme »

Vous voulez découper une planche de sprites à la volée?
Voici une petite fonction qui pourrais vous être utile :

MultiGrabSprite(ImageFile$,TailleX.l,TailleY.l,IndexStart.l)
  • ImageFile$ Correspond au nom du bitmap à découper
    TailleX,TailleY Correspond à la taille du découpage
    IndexStart Numéro du premier sprite qui sera découper

Code : Tout sélectionner

Procedure MultiGrabSprite(ImageFile$,TailleX.l,TailleY.l,IndexStart.l)
  
Shared SpriteID.l

SpriteID = LoadSprite(#PB_Any,ImageFile$)
  
If SpriteID <> 0  

UseBuffer(SpriteID) 

For y = 0 To (SpriteHeight(SpriteID) / TailleX)-1
  For x = 0 To (SpriteWidth(SpriteID) / TailleY)-1
    GrabSprite(IndexStart, x*TailleX, y*TailleY, TailleX, TailleY)
     IndexStart=IndexStart + 1
       Next x 
         Next y 

FreeSprite(SpriteID) 
UseBuffer(-1) 

Else
  MessageRequester("Erreur","Fichier introuvable : " +ImageFile$)
EndIf

EndProcedure
Par exemple si vous avez une planche de sprite qui fait 192*192 et que à l'intérieur de cette planche de sprite vous avec 9 animations d'une Taille de 64*64 :

MultiGrabSprite("MonImage.bmp",64,64,100)
Le premier Numéro du sprite découper sera 100 le dernier sera 109 !

Voilà j'éspère qu'il sera utile pour les débutants :wink:
Dernière modification par Anonyme le mar. 01/nov./2005 0:10, modifié 1 fois.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

c'est sympa comme tout ^^
juste une remarque :
si jamais un sprite numéro 0 existait bah hop ta fonction le supprime... utilise plutôt #PB_Any

Dri ;)
Anonyme

Message par Anonyme »

C'est exact , bonne remarque.
Cette fonction c'est un peu la tienne ^^ elle m'a bien servi à mes debuts en prog sous db :wink:
Répondre