Slide Show Manuel

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Slide Show Manuel

Message par falsam »

Un petit code qui ne présente rien d'extraordinaire pour faire défiler des images manuellement ou avec les touches de raccourcis suivants :

- Home : Première image.
- Flèche gauche : Image précédente.
- Flèche droite : Image suivante.
- End : Dernière image.


Dans ce code les images tests sont toutes redimensionnées avec les dimensions de l’écran ce qui n'est pas forcément une bonne chose.

■ Le code et les images sont hébergés sur la plateforme collaborative GitHub sur ce lien
https://github.com/falsam/2D-SlideShow

■ Téléchargement
https://github.com/falsam/2D-SlideShow/ ... master.zip

■ Code sans les images

Code : Tout sélectionner

EnableExplicit

Enumeration Window
  #MainForm  
EndEnumeration

Enumeration Gadget
  #Previous
  #Next
EndEnumeration

Global Event
Global Width, Height
Global Dim Images(4), PreviousImage, CurrentImage, NextImage, x, Count, Flag = #PB_Ignore, Increment = 50, Direction

Declare FirstImage()
Declare PreviousImage()
Declare NextImage()
Declare LastImage()

InitSprite() 
InitKeyboard()
InitMouse()
UseJPEGImageDecoder()

;Quelles sont les dimensions de la fenetre
ExamineDesktops()
Width = DesktopWidth(0)
Height = DesktopHeight(0)

;Affichage de la fenetre
OpenWindow(#MainForm, 0, 0, Width, Height, "FlipBoard", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

ButtonGadget(#Previous, 10, WindowHeight(#MainForm) - 38, 80, 22, "Previous")
ButtonGadget(#Next, 100, WindowHeight(#MainForm) - 38, 80, 22, "Next")

OpenWindowedScreen(WindowID(0), 0, 0, Width, Height, #True, 0, 40)

;Chargement des images
For x = 0 To 4
  Images(x) = LoadSprite(#PB_Any, "images/image" + x + ".jpg")
  ZoomSprite(Images(x), Width, Height)
Next

;Premiere image
FirstImage()

;Boucle evenementielle
Repeat   
  Repeat
    Event = WindowEvent()
    Select Event
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Previous : PreviousImage()
          Case #Next : NextImage()
        EndSelect
        
      Case #PB_Event_CloseWindow
        End
    EndSelect  
  Until Event=0
  
  ;Les images peuvent défiler à gauche (Direction  = -1) ou à droite (Direction = 1)
  If Flag = #Previous Or Flag = #Next
    x + Increment * Direction
    
    If Abs(x) > Width
      x = 0
      Flag = #PB_Ignore
      
      CurrentImage = Images(Count)
    EndIf
  EndIf
  
  ;Affichage des images
  ClearScreen(RGB(0, 0, 0))
  DisplaySprite(CurrentImage, -x, 0)
  
  If flag = #Previous
    DisplaySprite(PreviousImage, (Width + x) * -1, 0)
  EndIf
  
  If flag = #Next
    DisplaySprite(NextImage, Width - x, 0)
  EndIf
  
  ;Defilement des pages avec le clavier
  ExamineKeyboard()
  If KeyboardReleased(#PB_Key_Home) 
    FirstImage()
  EndIf
  
  If KeyboardReleased(#PB_Key_Left)
    PreviousImage()
  EndIf
  
  If KeyboardReleased(#PB_Key_Right)
    NextImage()
  EndIf
  
  If KeyboardReleased(#PB_Key_End)
    LastImage()
  EndIf
  
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Procedure FirstImage()
  Count = 0
  CurrentImage = Images(0)
  NextImage = Images(1)  
EndProcedure

Procedure PreviousImage()
  If Count > 0
    Flag = #Previous
    Direction = -1
    Count - 1 
    PreviousImage = Images(Count)
  EndIf  
EndProcedure

Procedure NextImage()
  If Count < ArraySize(Images())
    Flag = #Next
    Direction = 1
    Count + 1
    NextImage = Images(Count)
  EndIf   
EndProcedure

Procedure LastImage()
  Count = ArraySize(Images())
  PreviousImage = Images(Count-1)
  CurrentImage = Images(Count)  
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Slide Show Manuel

Message par Ar-S »

Sympathique slideshow merci,
Il faudrait qu'à la dernière, en appuyant sur next ou flèche droite on affiche la 1ère histoire de créer une boucle. Idem en sens inverse.

---edit---
Je viens de comprendre que c'est un exemple pour david ;)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre