ButtonImage : choisir l'image

Codes specifiques à Windows
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

ButtonImage : choisir l'image

Message par hub73 »

Bonjour à tous.
Je ne parviens pas à bien initialiser mon ButtonImage lorsque je distribue mon logiciel final. L'image ne s'affiche pas dans le bouton.
J'utilise le code suivant. Le fichier radio.png est au même niveau que le programme .exe

Merci à vous.

Code : Tout sélectionner

  Define Image_radio.s
  
  Chemin_image_radio$ = GetPathPart(ProgramFilename()) + "radio.png"
  Debug Chemin_image_radio$
  Image_bouton = LoadImage(#PB_Any , Chemin_image_radio$)
  SetGadgetAttribute (ButtonImage_radio, Image_bouton, #PB_Button_Image)
- Vous pouvez tester et installer le programme final windows10 , depuis le site de la webradio : http://www.lesfloralies.info
- Après installation, vous avez l'intégralité du code purebasic dans le dossier 'Les Floralies Radio Lecteur"
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: ButtonImage : choisir l'image

Message par venom »

Bonjour,

J'ai pas tester le code. Tu as vérifier via
Debug Chemin_image_radio$
si le chemin correspond exactement au chemin de ton fichier image ? Et as tu appeler la fonction UsePNGImageDecoder() en début de code ?

Car l'exemple de base est facilement compréhensible





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Micoute
Messages : 2583
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: ButtonImage : choisir l'image

Message par Micoute »

Surtout, ne pas oublier de déclarer le bouton image pour pouvoir l'utiliser.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: ButtonImage : choisir l'image

Message par Marc56 »

Beau boulot :)

Ton bloc de code pour l'image dans le code principal est inutile puisque tu charges déjà ton image dans le formulaire
XIncludeFile "formulaire_lecteur_radio.pbf"
Regarde le .pbf il fait déjà le boulot

Code : Tout sélectionner

UsePNGImageDecoder()
...
Img_Window_0_0 = LoadImage(#PB_Any,"C:\Users\pc\...
...
ButtonImage_radio = ButtonImageGadget(#PB_Any, 10, 10, 110, 110, ImageID(#Img_Window_0_0))
De même inutile de remettre UsePNGImageDecoder() dans le code principal puisque ce dernier et déjà chargé par le .pbf


:idea: Puisque tu as eut le bon reflex d'utiliser le gestionnaire de formulaire,
tu peux d'ailleurs lui demander d'incorporer directement l'image dans l'EXE
ainsi tu n'auras pas à la fournir avec le programme.

1. Cliques sur le ButtonImage
2. Vas dans le menu Form
3. Sélectionne Manager d'Images...
4. Coches CatchImage (il créé le code)
5. Appuie sur Rendre rép.relatif (tu peux ensuite compiler des sources depuis n'importe où)

Si tu regardes le code source du .pbf, il a créé deux bocs:

Code : Tout sélectionner

; au début
Img_Window_0_0 = CatchImage(#PB_Any,?Img_Window_0_0)

; en bas
DataSection
  Img_Window_0_0: : IncludeBinary "..\Users\pc\Documents\radio\nos_logiciels\purebasic\radio_lecteur_purebasic\radio.png"
EndDataSection
(C'est le genre de lignes pénibles à faire à la main, donc c'est un des excellents points du FD)

Si ensuite tu changes le chemin d'une image (lors de la compilation) ou si tu veux en ajouter, il suffit de repasser par le manager d'images.

Enfin, si tu veux changer l'image d'un bouton après création la syntaxe est
SetGadgetAttribute(#Gadget, Attribut, Valeur)

Code : Tout sélectionner

SetGadgetAttribute(ButtonImage_radio, #PB_Button_Image, ImageID(#Img_Window_0_0))
(l'attribut est le deuxième paramètre et ne pas oublier ImageID( ))

8)
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: ButtonImage : choisir l'image

Message par hub73 »

Merci pour vos conseils. Tout fonctionne parfaitement désormais.
Si vous avez d'autres suggestions de finitions je suis preneur. Je souhaite conserver qqchose de très simple.
Répondre