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