Afficher une Image Animée (GIF)

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

Afficher une Image Animée (GIF)

Message par falsam »

Suite à une demande de KCC, une petite astuce pour afficher une image animée (Ou toutes autres images).

Code : Tout sélectionner

Procedure ImageGadget_x(Gadget.i, Left.i, Top.i, Width.i, Height.i, FileImage.s)
  Protected Image.s
  Image="about:<html><body scroll='no' leftmargin='0' topmargin='0'><img src='"+FileImage+"'></img></body></html>"
  ProcedureReturn WebGadget(Gadget, Left ,Top, Width, Height, Image)
EndProcedure

;Dans mon exemple l'image se trouve dans le dossier courrant de l'application
Image.s=GetCurrentDirectory()+"test.gif"
If OpenWindow(0,200,200,450,450,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered |#PB_Window_TitleBar)
  ImageGadget_x(10, 10, 20, 240, 320, Image)
  Repeat 
    Event=WaitWindowEvent() 
  Until Event=#PB_Event_CloseWindow
EndIf
Dernière modification par falsam le lun. 22/août/2011 15:06, modifié 2 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Afficher une Image Animée (GIF)

Message par falsam »

Un code un peu plus complet avec redimensionnement et choix d'une couleur de fond.

Code : Tout sélectionner

;Mettre cette procedure dans un fichier include si besoin :)
Procedure ImageGadget_x(Gadget.i, Left.i, Top.i, Width.i, Height.i, FileImage.s, Bgcolor.i)
  Protected IDGadget.l, Image.s, RGBColor.s
  
  ;Couleur RGB sous forme d'un string
  RGBColor="rgb("+Str(Red(Bgcolor))+","+Str(Green(Bgcolor))+","+Str(Blue(Bgcolor))+")"
  
  ;Mise en forme de l'image en utilisant un peu de code html
  ;1-Pas de scrollbar, marge à 0 et couleur de fond  
  Image="about:<html><body scroll='no' leftmargin='0' topmargin='0' bgcolor="+Chr(34)+RGBcolor+Chr(34)+">"
  ;2-redimensionnement de l'image
  Image+"<img src='"+FileImage+"' Width="+Str(width)+" Height="+Str(Height)+"></img>"
  ;3-Fin du code HTML
  Image+"</body></html>"
  
  ;AFfichage de l'image dans un webgadget
  Idgadget=WebGadget(Gadget, Left ,Top, Width, Height, Image)
  
  ;Blocage du menu contextuel
  If Gadget=#PB_Any
    SetGadgetAttribute(IDGadget, #PB_Web_BlockPopupMenu, #True)
  Else
    SetGadgetAttribute(Gadget, #PB_Web_BlockPopupMenu, #True)
  EndIf
    
  ProcedureReturn Idgadget
EndProcedure

;Dans mon exemple l'image se trouve dans le dossier courrant de l'application
Image.s=GetCurrentDirectory()+"test.gif"
If OpenWindow(0,200,200,450,450,"Test",#PB_Window_SystemMenu|#PB_Window_ScreenCentered |#PB_Window_TitleBar)
  ImageGadget_x(#PB_Any, 10, 20, 200, 200, Image, RGB(240,240,240))
  Repeat 
    Event=WaitWindowEvent()   
  Until Event=#PB_Event_CloseWindow
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre