J'ai modifier encore le code pour que les sprites 'texture' soit caré, le bug est moindre et différent mais persiste toujours
Code : Tout sélectionner
InitSprite()
InitSprite3D()
UsePNGImageDecoder()
Enumeration
  #SpriteWindow
  #SpriteWindowPart
  #SpriteWindowBack
  #WindowTest
  #WindowTest2
EndEnumeration
Enumeration
  #ImageWindowPart
  #ImageCoinHG
  #ImageCoinHD
  #ImageCoinBG
  #ImageCoinBD
  #ImageBas
  #ImageDroit
  #ImageGauche
  #ImageHaut
  #ImageSBas
  #ImageSDroit
  #ImageSGauche
  #ImageSHaut
  #ImageWinFond
EndEnumeration
;-Ouverture de la fenetre
OpenWindow(0,0,0,800,600,"test ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)
;-
LoadImage(#ImageWindowPart,"Image\Skin\system.png")
LoadSprite(#SpriteWindowPart,"Image\Skin\system.png",#PB_Sprite_Texture)
UseBuffer(#SpriteWindowPart)
GrabSprite(#SpriteWindowBack,0,0,128,128,#PB_Sprite_Texture)
UseBuffer(#PB_Default)
CreateSprite3D(#SpriteWindowBack,#SpriteWindowBack)
;-Macro
Macro DrawWindow(id,Posx,Posy,WindowLargeur,WindowHauteur,TransCoef)
  If id=#Null
    spriteid=#SpriteWindow
    If IsSprite(spriteid)
      FreeSprite(spriteid)
    EndIf 
  Else
    spriteid=id  
  EndIf
  If Not IsSprite(spriteid)
    
    If WindowLargeur>WindowHauteur
      WinMaxSize=WindowLargeur
    Else
      WinMaxSize=WindowHauteur
    EndIf
    
    CreateSprite(spriteid,WinMaxSize,WinMaxSize,#PB_Sprite_Texture)
    TransparentSpriteColor(spriteid,RGB(0,255,0))
    
    GrabImage(#ImageWindowPart,#ImageCoinHG  ,128,0,8,8)
    GrabImage(#ImageWindowPart,#ImageCoinHD  ,184,0,8,8)
    GrabImage(#ImageWindowPart,#ImageCoinBG  ,128,56,8,8)
    GrabImage(#ImageWindowPart,#ImageCoinBD  ,184,56,8,8)
    
    GrabImage(#ImageWindowPart,#ImageHaut    ,144,0,32,8)
    GrabImage(#ImageWindowPart,#ImageBas     ,144,56,32,8)
    GrabImage(#ImageWindowPart,#ImageDroit   ,128,16,8,32)
    GrabImage(#ImageWindowPart,#ImageGauche  ,184,16,8,32)
    
    GrabImage(#ImageWindowPart,#ImageSHaut   ,144,0,1,8)
    GrabImage(#ImageWindowPart,#ImageSBas    ,144,56,1,8)
    GrabImage(#ImageWindowPart,#ImageSDroit  ,128,16,8,1)
    GrabImage(#ImageWindowPart,#ImageSGauche ,184,16,8,1)
    
    GrabImage(#ImageWindowPart,#ImageWinFond ,0,0,128,128)
    
    If StartDrawing(SpriteOutput(spriteid))
      Box(0,0,WinMaxSize,WinMaxSize,RGB(0,255,0))
      
      ;Contour (coin)
      DrawImage(ImageID(#ImageCoinHG),0,0)
      DrawImage(ImageID(#ImageCoinBG),0,WindowHauteur-8)
      DrawImage(ImageID(#ImageCoinHD),WindowLargeur-8,0)
      DrawImage(ImageID(#ImageCoinBD),WindowLargeur-8,WindowHauteur-8)
      
      ;Contour (bord)
      Nb32=(WindowLargeur-16)/32
      If Nb32>0
        For x=8 To (Nb32*32)-16 Step 32
          DrawImage(ImageID(#ImageHaut),x,0)
        Next
        For x=(Nb32*32)-16 To WindowLargeur-8
          DrawImage(ImageID(#ImageSHaut),x,0)
        Next
        
        For x=8 To (Nb32*32)-16 Step 32
          DrawImage(ImageID(#ImageBas),x,WindowHauteur-8)
        Next
        For x=(Nb32*32)-16 To WindowLargeur-8
          DrawImage(ImageID(#ImageSBas),x,WindowHauteur-8)
        Next
      Else
        For x=8 To WindowLargeur-8
          DrawImage(ImageID(#ImageSHaut),x,0)
        Next
        For x=8 To WindowLargeur-8
          DrawImage(ImageID(#ImageSBas),x,WindowHauteur-8)
        Next
      EndIf
      
      Nb32=(WindowHauteur-16)/32
      If Nb32>0
        For y=8 To (Nb32*32)-16 Step 32
          DrawImage(ImageID(#ImageDroit),0,y)
        Next
        For y=(Nb32*32)-16 To WindowHauteur-8
          DrawImage(ImageID(#ImageSDroit),0,y)
        Next
        For y=8 To (Nb32*32)-16 Step 32
          DrawImage(ImageID(#ImageGauche),WindowLargeur-8,y)
        Next
        For y=(Nb32*32)-16 To WindowHauteur-8
          DrawImage(ImageID(#ImageSGauche),WindowLargeur-8,y)
        Next
      Else
        For y=8 To WindowHauteur-8
          DrawImage(ImageID(#ImageSDroit),0,y)
        Next
        For y=8 To WindowHauteur-8
          DrawImage(ImageID(#ImageSGauche),WindowLargeur-8,y)
        Next
      EndIf
    EndIf 
    StopDrawing()
  EndIf
 
  CreateSprite3D(spriteid,spriteid)
  Start3D()
    ZoomSprite3D(#SpriteWindowBack,WindowLargeur,WindowHauteur)
    DisplaySprite3D(#SpriteWindowBack,Posx,Posy,TransCoef)
    DisplaySprite3D(spriteid,Posx,Posy,TransCoef)
  Stop3D() 
EndMacro
;-Boucle
Repeat
  WindowEvent=WindowEvent()
  ClearScreen(RGB(255,255,255))
  DrawWindow(#WindowTest,128,128,256,32,125)
  DrawWindow(#WindowTest2,0,400,800,32,125)
  FlipBuffers()
  Delay(1)
Until WindowEvent=#PB_Event_CloseWindow