Page 1 sur 1

Découpage d'un bmp

Publié : sam. 23/avr./2005 16:01
par Anonyme
Salut à tous, Voilà pour je viens à peine de passer sous pb, et je suis en train de reprogrammer mon editeur de tiles que j'avais fait sous dbpro.

Voila le problème : Dans mon editeur j'utilise des "planches" de tiles en 1024x768 que je découpe ensuite en 64x64 ce qui me donne au total 192 tiles par "planches"

Sous pb j'ai essayer ces commandes , Grabsprite, Clipsprite,etc...
Le problème avec Clipsprite, c'est que la zone "caché" du sprite est toujours en mémoire.

Sous Dbpro le code est comme cela :

Code : Tout sélectionner

for y = 0 to Taille_BitmapY-1
for x = 0 to Taille_BitmapX-1

get image GrabNumber,x*64,y*64,x*64+64,y*64+64
GrabNumber=GrabNumber+1

next x
next y
Ensuite à partir de ces images je peut faire mes sprites.
Je veut faire exactement la meme chose sous pure si quelqu'un qui me comprend pouvait m'aider...

@++ :wink:

Publié : sam. 23/avr./2005 16:23
par comtois
essaye ça

Code : Tout sélectionner

#ScreenWidth  = 1024 : #ScreenHeight = 768 : #ScreenDepth  = 32
If InitSprite() = 0 Or InitKeyboard() = 0 
  MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 ) : End
ElseIf OpenScreen( #ScreenWidth , #ScreenHeight , #ScreenDepth , "Effets" ) = 0
  MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 ) : End
EndIf

; fabrique un sprite qui correspond à ton image
CreateSprite(0,1024,768)
StartDrawing(SpriteOutput(0))
For y = 0 To SpriteHeight(0) - 1 Step 64
  For x = 0 To SpriteWidth(0) - 1 Step 64
    Box(x, y, 64, 64, RGB(Random(255), Random(255), Random(255)))
  Next x
Next y
StopDrawing()

;Récupère les sprites
UseBuffer(0)
GrabNumber = 1 
For y = 0 To SpriteHeight(0) - 1 Step 64
  For x = 0 To SpriteWidth(0) - 1 Step 64
    GrabSprite(GrabNumber, x, y, 64, 64)
    GrabNumber=GrabNumber + 1 
  Next x
Next y
UseBuffer(-1)

Repeat
  
  ClearScreen(0,0,0)
  
  ExamineKeyboard()
  No = 1
  For y = 0 To SpriteHeight(0) - 1 Step 64
    For x = 0 To SpriteWidth(0) - 1 Step 64
      DisplaySprite(No, x, y)
      No + 1
    Next x
  Next y
  FlipBuffers()
  
Until KeyboardPushed(#PB_Key_Escape)

Publié : sam. 23/avr./2005 16:27
par Anonyme
Merci, c'est exactement ce qu'il me fallait. :lol: