Lenteurs d'affichage des gadgets avec WindowedScreen()
Publié : lun. 16/juin/2008 12:29
Voici le problème : sans écran fenêtré les gadgets s'affichent immédiatement, par exemple lorsque l'on clique sur un onglet tous les gadgets correspondant s'affichent instantanément ; mais quand il y a un écran fenêtré, les gadgets sont lents à s'afficher, ils s'affichent au fur et à mesure les uns après les autres. Vous pourrez facilement constater la différence de rapidité en commentant les commandes de l'écran et des sprites. Avec ou sans le débogueur ça ne change rien.
Alors ma question est donc la suivante : comment résoudre ce problème de lenteur à l'affichage ?
Voici mon code :
PS: Il n'y a dans ce code que quelques gadgets, mais la lenteur d'affichage augmente avec le nombre de gadgets à afficher, ça devient très gênant quand il y en a vraiment beaucoup...
Alors ma question est donc la suivante : comment résoudre ce problème de lenteur à l'affichage ?
Voici mon code :
Code : Tout sélectionner
InitSprite()
OpenWindow(0,0,0,860,572,"Programme",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
PanelGadget(0,532,10,318,512)
AddGadgetItem(0,-1,"Panneau n°1")
ButtonGadget(1,10,10,120,25,"Bouton n°1")
ButtonGadget(2,10,45,120,25,"Bouton n°2")
ButtonGadget(3,10,80,120,25,"Bouton n°3")
AddGadgetItem(0,-1,"Panneau n°2")
ListViewGadget(4,10,10,120,70)
ButtonGadget(5,10,90,120,25,"Bouton n°4")
ButtonGadget(6,10,125,120,25,"Bouton n°5")
ButtonGadget(7,10,160,120,25,"Bouton n°6")
CreateStatusBar(0,WindowID(0))
CreateMenu(0,WindowID(0))
MenuTitle("Projet")
MenuItem(0,"Quitter")
OpenWindowedScreen(WindowID(0),10,10,512,512,0,0,0)
CreateSprite(0,128,128)
StartDrawing(SpriteOutput(0))
Circle(64,64,64,RGB(255,0,0))
StopDrawing()
For i=1 To 250
AddGadgetItem(4,-1,"élément n°"+Str(i))
Next i
Procedure Display()
Static X.f,Y.f,i.b,j.b
If i=0 : X+2 : Else : X-2 : EndIf
If j=0 : Y+0.6 : Else : Y-0.6 : EndIf
DisplaySprite(0,X,Y)
If X>384 : i=1 : EndIf
If X<0 : i=0 : EndIf
If Y>384 : j=1 : EndIf
If Y<0 : j=0 : EndIf
EndProcedure
Repeat
Event=WaitWindowEvent(10)
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Menu
EventMenu=EventMenu()
Select EventMenu
Case 0
End
EndSelect
Case #PB_Event_Gadget
EventGadget=EventGadget()
Select EventGadget
Case 1 To 3
MessageRequester("Information","Vous avez appuyé sur le bouton n°"+Str(EventGadget))
Case 5 To 7
MessageRequester("Information","Vous avez appuyé sur le bouton n°"+Str(EventGadget-1))
EndSelect
EndSelect
ClearScreen(0)
Display()
FlipBuffers()
ForEver