Sprites deviennent blanc

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Sprites deviennent blanc

Message par Progi1984 »

Bonjour, j'utilise un openwindowedscreen dans un openwindow.
Quand je resize ma fenetre principale, les sprites3d s'affichant dans mon openwindowedscreen deviennent blanc dans mon autre fenetre.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

c'est normal, tu peux pas donner un exemple
que je vois si c'est bien ce que je crois ...

(j'ai besoin de voir pour me rapeller :? ma memoire marche comme ça ) :?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je crois me rapeller !!
depuis que le purebasic gere les couleurs des fenetres et gadgets
il faut penser que par defaut la fenetre a une couleur blanche !!

il te suffit d'utiliser les fonctions de coloration de fenetre de purebasic
pour forcer ta fenetre a etre painte en noir par ex !! :D
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Grace à ce code, j'ai compris qu'il fallait réinitialiser ces sprites lors d'un redimensionnement de la fenetre

Code : Tout sélectionner

If InitSprite() = 0
    MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
    End
  EndIf
  
  If OpenWindow(0, 0, 0, 220, 160, "Un écran dans une fenêtre...", #PB_Window_SystemMenu|#PB_Window_SizeGadget | #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(0))
      ButtonGadget(0, 170, 135, 45, 20, "Quitter")
    EndIf
    If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160, 1, 50, 0)
      CreateSprite(0, 20, 20)
      If StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20, RGB(255, 0, 155))
        Box(5, 5, 10, 10, RGB(155, 0, 255))
        StopDrawing()
      EndIf
    Else
      MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
      End
    EndIf
  EndIf
  
  direction = 2
  Repeat
    ; Il est très important de traiter tous les événements restants dans la file d'attente à chaque tour
    ;
    Repeat
      Event = WindowEvent()
      
      Select Event 
        Case #PB_Event_Gadget
          If EventGadget() = 0
            End
          EndIf
        Case #PB_Event_SizeWindow
          OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0)-50, WindowHeight(0), 1, 50, 0)
          CreateSprite(0, 20, 20)
                If StartDrawing(SpriteOutput(0))
                  Box(0, 0, 20, 20, RGB(255, 0, 155))
                  Box(5, 5, 10, 10, RGB(155, 0, 255))
                  StopDrawing()
                EndIf
        Case #PB_Event_CloseWindow
          End 
      EndSelect
    Until Event = 0
  
    FlipBuffers() 
    ClearScreen(RGB(0, 0, 0))
    DisplaySprite(0, x, x)
    x + direction
    If x > 140 : direction = -2 : EndIf
    If x < 0   : direction =  2 : EndIf
    Delay(1)
  ForEver
Répondre