Pourquoi sur toutes les autres surfaces de dessin, le sprite est affiché correctement sans problème alors que sur le sprite c'est pas bon ?
On sait que c'est parce que le sprite est créé avec la couleur noire, et que PB n'affiche pas le noir car c'est la couleur transparente par défaut, sauf que si on crée le sprite avec une couleur de fond transparente, idem ici, la couleur transparente est considérée comme du noir...
Donc en fait, il faut créer le sprite sans couleur transparente, lui coller un fond d'une autre couleur, le blanc par exemple, ensuite coller notre image sur le sprite, puis dire à PB de ne pas afficher le blanc, là ça fonctionne ok, pourquoi faire simple quand on peut faire compliqué ?
Code : Tout sélectionner
If InitSprite() = 0
MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
End
EndIf
UsePNGImageDecoder()
LoadImage(1, "Images\Personnage de face immobile.png")
If OpenWindow(0, 0, 0, 300, 200, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonImageGadget(0, 170, 10, 100, 100, ImageID(1))
ImageGadget(1, 170, GadgetY(0) + GadgetHeight(0) + 10, ImageWidth(1), ImageHeight(1), ImageID(1), #PB_Image_Border)
If StartDrawing(WindowOutput(0))
DrawAlphaImage(ImageID(1), GadgetX(1) + GadgetWidth(1) + 10, GadgetY(0) + GadgetHeight(0) + 10)
StopDrawing()
EndIf
If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160)
CreateSprite(0, ImageWidth(1), ImageHeight(1))
If StartDrawing(SpriteOutput(0))
DrawAlphaImage(ImageID(1), 0, 0)
StopDrawing()
EndIf
Else
MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
End
EndIf
EndIf
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_Gadget
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
FlipBuffers()
ClearScreen(RGB(255, 255, 255))
DisplayTransparentSprite(0, 50, 50)
Delay(1)
ForEver
http://www.aht.li/2678367/Nouveau_dossier.7z
Je vous remercie beaucoup tous par anticipation.