Page 2 sur 2

Publié : mar. 08/janv./2008 0:42
par poshu
hop, je sort ce topic des limbes de l'oubli (?)
Le code est il encore dispo quelque part? Je suis intéressés par l'intégration d'un pack :3

Publié : mar. 08/janv./2008 6:36
par venom
J'ai ajouté l'adresse de mon site dans mon profil, comme ça plus besoin de chercher
bonjour,
ok c'est simpa mais je cherche encore :D :wink: .


@++

Publié : mar. 08/janv./2008 10:46
par Droopy
Je t'ai fait un package sur rapidshare ( http://rapidshare.com/files/82166041/SlideShow.zip.html )

C'est codé en 3.94 / Droopy Lib

Publié : mar. 08/janv./2008 11:02
par poshu
Merci Droopy.

J'ai pas la Droopy Lib par contre, c'est peut être le moment d'y passer.

Publié : mar. 08/janv./2008 12:20
par Backup
pour rappel Guimauve avait fait un Ecran de veille qui lit le contenu d'un dossier, pour afficher les images a l'ecran :) (aucun lib necessaire)

a compiler en *.scr , et a mettre dans le dossier System de Windows
ne peas oublier de modifier le chemin par defaut des images :)


Code : Tout sélectionner

; mis en Pure basic V 4.01 par Dobro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; PureBasic Screensaver template -
; Nom de l'écran de veille : Diaporamma
; Programmation : Version 1.0
; Programmé par : Guimauve
; Date : 28 décembre 2004
; Codé avec PureBasic V3.92
;
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Écran de veille qui affiche les images bmp et jpeg d'un répertoire sélectionné comme un
; diaporamma.
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Déclaration des procédures

Declare ChargementImages(Repertoire$)
Declare CreateINI(Fichier$, Repertoire$, delais.l)
Declare SpinLong(No.l, mini.l, maxi.l, increment.l)
Declare OnlyOneSCRStop()
Declare OnlyOneSCRStart(Name$)
Declare InitScreenSaver(ScreenSaverName$, ScrWidth.w, ScrHeight.w, ScrDepth.w)

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Constantes, Variables, Structure, Création des Tableaux, etc.

Enumeration
  
  #Scr_Win_Param
  
  #Txt_version
  #String_Repertoire
  #Txt_delais
  #String_delais
  #TrackBar_Delais
  #Btn_Parcourir
  #Btn_ok
  #Btn_cancel
  
EndEnumeration

ScreenSaverName$ = "Diaporamma"
ScreenSaverVersion$ = "Version 1.0"

ScreenW = GetSystemMetrics_(#SM_CXSCREEN)
ScreenH = GetSystemMetrics_(#SM_CYSCREEN)
ScreenD = 32

UseJPEGImageDecoder()

Global NewList ListeImages.s()

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Programme principale
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

OnlyOneSCRStart(ScreenSaverName$)

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; On regarde quel paramètre à été donné au programme

ici le repertoire  remplis d'image a lire !!
Repertoire_a_Charger$ = "d:\Mes_Photos\photo a Marie\"

delais.l =  250


command$= "/s"


; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; L'écran de veille, le scr est lancé avec /s comme paramètre

Select command$
  
  Case "/s"
    
    InitScreenSaver(ScreenSaverName$, ScreenW, ScreenH, ScreenD)
    GetCursorPos_(SourisOrigine.POINT)
    ShowCursor_(0)
    
    ChargementImages(Repertoire_a_Charger$)
    sprite_no.l = 0
    Repeat
      
      FlipBuffers()
      ClearScreen(RGB(0, 0, 0))
      
      ; <><><><><><><><><><><><><><><><><><><><><><><><><><><>
      ; Mettre ici le code de ce que l'on veut voir à l'écran
      ; Code
      ; <><><><><><><><><><><><><><><><><><><><><><><><><><><>
      largeur.w = SpriteWidth(sprite_no)
      hauteur.w = SpriteHeight(sprite_no)
      If largeur <> ScreenW
        x = (ScreenW - largeur) / 2
      Else
        x = 0
      EndIf
      
      If hauteur <> ScreenH
        Y = (ScreenH - hauteur) / 2
      Else
        Y = 0
      EndIf
      
      DisplaySprite(sprite_no, x, Y)
      
      ; StartDrawing(ScreenOutput())
      ; Locate(5, 5)
      ; FrontColor(100, 15, 175)
      ; DrawingMode(1)
      ; DrawText("Image no : " + Str(sprite_no + 1) )
      ; StopDrawing()
      
      If frame = delais
        sprite_no = SpinLong(sprite_no, 0, CountList(ListeImages()) - 1, 1)
        frame = 0
      EndIf
      
      ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
      ; On vérifie si l'utilisateur touche au clavier ou à la souris
      GetCursorPos_(Souris.POINT)
      ExamineKeyboard()
      
      frame + 1
      
    Until KeyboardPushed(#PB_Key_All) > 0 Or Souris\x <> SourisOrigine\x Or Souris\Y <> SourisOrigine\Y ; WindowEvent() = #PB_Event_CloseWindow Or
    
    
    
    ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ; Fenètre de paramétrage de l'écran de veille
    
  Case "/c"
    
    If OpenWindow(#Scr_Win_Param, 0, 0, 300, 225, ScreenSaverName$, #PB_Window_ScreenCentered | #PB_Window_SystemMenu) <> 0
      
      If CreateGadgetList(WindowID(#Scr_Win_Param)) <> 0
        
        StringGadget(#String_Repertoire, 5, 5, 290, 20, Repertoire_a_Charger$)
        ButtonGadget(#Btn_Parcourir, 5, 30, 290, 25, "Choisir un répertoire d'images")
        TextGadget(#Txt_delais, 5, 60, 145, 20, "Délais entre les images :", #PB_Text_Center)
        StringGadget(#String_delais, 150, 60, 145, 20, Str(delais), #PB_String_ReadOnly)
        TrackBarGadget(#TrackBar_Delais, 5, 85, 290, 20, 25, 1000)
        TextGadget(#Txt_version, 10, 200, 150, 20, ScreenSaverVersion$)
        ButtonGadget(#Btn_ok, 130, 195, 75, 25, "Ok")
        ButtonGadget(#Btn_cancel, 215, 195, 75, 25, "Cancel")
        
      EndIf
      
      SetGadgetState(#TrackBar_Delais, delais)
      
      Repeat
        
        EventID.l = WaitWindowEvent()
        
        If EventID = #PB_Event_Gadget
          Select EventGadget()
            
            Case #TrackBar_Delais
              SetGadgetText(#String_delais, Str(GetGadgetState(#TrackBar_Delais)))
              
            Case #Btn_Parcourir
              Nouveaurepertoire$ = PathRequester("Choisir un répertoire d'images", Repertoire_a_Charger$)
              
              If Nouveaurepertoire$ <> Repertoire_a_Charger$
                Repertoire_a_Charger$ = Nouveaurepertoire$
                SetGadgetText(#String_Repertoire,Repertoire_a_Charger$)
              EndIf
              
            Case #Btn_ok
              CreateINI(ScreenSaverName$ + ".ini", Repertoire_a_Charger$, Val(GetGadgetText(#String_delais)))
              EventID = #PB_Event_CloseWindow
              
            Case #Btn_cancel
              EventID = #PB_Event_CloseWindow
              
          EndSelect
        EndIf
        
      Until EventID = #PB_Event_CloseWindow
      
    EndIf
    
    
    ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ; Code pour l'affichage de l'aperçu
    
  Case "/p"
    End
    
EndSelect


OnlyOneSCRStop()

End



; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; <<<<<<<<<<<<<<<<<<<<<<<<<<<< Procédures Secondaires >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


Procedure ChargementImages(Repertoire$)
  
  If ExamineDirectory(0, Repertoire$, "*.bmp") <> 0
    While NextDirectoryEntry(0) <> 0
      Nom_de_fichier$ = DirectoryEntryName(0)
      If Left(Nom_de_fichier$, 1) <> "."
        AddElement(ListeImages())
        ListeImages() = Nom_de_fichier$
      EndIf
    Wend
  EndIf
  
  If ExamineDirectory(0, Repertoire$, "*.jpg") <> 0
    While NextDirectoryEntry(0) <> 0
      Nom_de_fichier$ = DirectoryEntryName(0)
      If Left(Nom_de_fichier$, 1) <> "."
        AddElement(ListeImages())
        ListeImages() = Nom_de_fichier$
      EndIf
    Wend
  EndIf
  
  ForEach ListeImages()
    LoadSprite(Index, Repertoire$ + "\" + ListeImages())
    Index + 1
  Next
  
EndProcedure

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Procedure CreateINI(Fichier$, Repertoire$, delais.l)
  
  CreatePreferences(Fichier$)
  WritePreferenceString("Répertoire d'images", Repertoire$)
  WritePreferenceLong("Délais entre les images", delais)
  ClosePreferences()
  
EndProcedure

; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Procedure.l SpinLong(No.l, mini.l, maxi.l, increment.l)
  
  No + increment
  
  If No > maxi
    No = mini
  EndIf
  
  If No < mini
    No = maxi
  EndIf
  
  ProcedureReturn No
  
EndProcedure


Procedure OnlyOneSCRStart(Name$)
  Shared OnlyOneStartMutex.l
  OnlyOneStartMutex = CreateMutex_(0, 1, Name$)
  OnlyOneStartError.l = GetLastError_()
  If OnlyOneStartMutex <> 0 And OnlyOneStartError = 0
    ProcedureReturn 1
  Else
    CloseHandle_(OnlyOneStartMutex)
    End
  EndIf
EndProcedure

Procedure OnlyOneSCRStop()
  CloseHandle_(OnlyOneStartMutex)
EndProcedure

Procedure InitScreenSaver(ScreenSaverName$, ScrWidth.w, ScrHeight.w, ScrDepth.w)
  
  ; Initialisation des sprites et du clavier.
  If InitSprite() = 0 Or InitKeyboard() = 0
    MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
    End
  EndIf
  
  ; Ouverture du screen
  If OpenScreen(ScrWidth, ScrHeight, ScrDepth, ScreenSaverName$) = 0
    MessageRequester("Error", "Can't open a screen !", 0)
    End
  EndIf
  
EndProcedure 

Publié : mer. 09/janv./2008 7:11
par venom
merci droopy pour le lien :wink: et merci aussi a toi dobro pour ce code c'est cool vos programmes.



@++