Inclure des images jpg dans l'exe

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Inclure des images jpg dans l'exe

Message par falsam »

Stan_fr a écrit : ven. 17/mars/2023 21:13 Par contre ça ne répond pas à mon problème qui est de pouvoir donner un exe qui contient les drapeaux pour qu'il puisse fonctionner même si les images des drapeaux ne sont pas présentes, car là ça déclenche une erreur.
Il ne devrait pas il y avoir de problème.

Télécharge à nouveau la correction précédente. J'ai ajouté un exécutable. Tu verras qu'il fonctionne sans les images présentes. Il est possible que ton antivirus rejete l'exécutable. :wink:

:arrow: https://falsam.com/download/purebasic/S ... ction.zip
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%
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Inclure des images jpg dans l'exe

Message par Stan_fr »

falsam a écrit : ven. 17/mars/2023 21:23
Stan_fr a écrit : ven. 17/mars/2023 21:13 Par contre ça ne répond pas à mon problème qui est de pouvoir donner un exe qui contient les drapeaux pour qu'il puisse fonctionner même si les images des drapeaux ne sont pas présentes, car là ça déclenche une erreur.
Il ne devrait pas il y avoir de problème.

Télécharge à nouveau la correction précédente. J'ai ajouté un exécutable. Tu verras qu'il fonctionne sans les images présentes. Il est possible que ton antivirus rejete l'exécutable. :wink:

:arrow: https://falsam.com/download/purebasic/S ... ction.zip

Bonjour,

Là ça marche parfaitement MERCI !

Je vais pouvoir avancer.

Qu'est-ce que je faisais mal ? (À part compiler un coup avec les fichiers présents, un coup sans ? Ça veut dire que les DataSection ne sont pris en compte qu'à la compilation, ce qui parait logique à la réflexion ?)

Encore Merci ! :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Inclure des images jpg dans l'exe

Message par falsam »

Stan_fr a écrit : sam. 18/mars/2023 9:37 Ça veut dire que les DataSection ne sont pris en compte qu'à la compilation
OuiiiiIIIIIIIiiiiii :wink:
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%
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Inclure des images jpg dans l'exe

Message par Stan_fr »

falsam a écrit : sam. 18/mars/2023 13:18
Stan_fr a écrit : sam. 18/mars/2023 9:37 Ça veut dire que les DataSection ne sont pris en compte qu'à la compilation
OuiiiiIIIIIIIiiiiii :wink:
Grâce à toi je suis, un peu, moins ignorant !

Meeerciiii ! :D
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Inclure des images jpg dans l'exe

Message par boddhi »

@stan
L'autre moyen pour inclure des images dans l'exe est de passer par l'utilisation de DataSection où seront décomposées sous forme hexadécimale (au choix, en octets en utilisant des Data.a/Read.a ou Data.C/Read.c ou en quad en utilisant des Data.q/Read.q) les données de tes images.
Voir, à cet effet, le lien : https://www.purebasic.fr/english/viewtopic.php?p=412884

Toutefois, à mon humble avis, dans le cas d'images, cela ne représente aucun intérêt (bien au contraire) à utiliser cette méthode autrement que pour, par exemple, partager du code sans avoir avoir à transmettre des fichiers annexes.

En effet, du point de vue du programmeur, quelle que soit la méthode utilisée, il faudra de toute façon des fichiers images qui seront donc soit inclus directement sous forme binaire (méthodes [X]IncludeBinary) soit convertis au format hexadécimal dans un premier temps puis inclus sous forme de données dans le code source dans un second temps (méthode proposée plus haut).
Néanmoins, l'utilisation de la seconde méthode présentent deux inconvénients majeurs : Le premier étant de se compliquer un peu la tâche (et donc une perte de temps) en devant, comme tu l'auras compris, convertir les images au format hexadécimal pour ensuite les incorporer dans le code source. Le second, et non des moindres, étant que dans l'éventualité où l'on viendrait à modifier graphiquement les images d'origine, il faudra recommencer le processus de conversion et d'incorporation.
Avec (X)IncludeBinary, pas de conversion ni de copie nécessaire et peu importe si des modifications ont été apportées aux fichiers. Une fois l'inclusion définie au départ, aucune modification n'aura à être apportée au source en cas de modification des fichiers d'origine, pour peu qu'ils conservent le même chemin et le même nom. Les fichiers seront pris tels qu'ils sont au moment de la création de l'exécutable,

Quant à l'utilisateur, quelle que soit la méthode utilisée, cela restera complètement transparent pour lui puisque les images seront de toute façon incluses dans le programme.

Donc, pour conclure, pourquoi se compliquer la vie en procédant à des conversions et à des copies lorsque PB possède des commandes créées, entre autres, pour gérer justement ce cas de figure ?
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Inclure des images jpg dans l'exe

Message par Stan_fr »

boddhi a écrit : dim. 19/mars/2023 0:13 @stan
...
Donc, pour conclure, pourquoi se compliquer la vie en procédant à des conversions et à des copies lorsque PB possède des commandes créées, entre autres, pour gérer justement ce cas de figure ?
Je suis bien d'accord !

C'est ce que falsam m'a donné comme solution, alors que je pataugeais complétement !

Les DataSection avec IncludeBinary fonctionnent très bien pour ce que je veux faire : cliquer sur des images de drapeaux pour changer de langue, avec des "drapeaux" inclus dans le code.

Par contre, j'ai encore des problèmes "d’esthétique" : mes drapeaux font 46x33 pixels, mais pour les afficher il faut un ButtonImageGadget bien plus grand (52x42 environ), je pourrais vivre avec si j'avais moyen de changer la couleur d'arrière plan du ButtonImageGadget, mais je ne sais pas comment.

Et je tâtonne aussi entre les

ButtonImageGadget(....., #PB_Button_Toggle)
ButtonImageGadget(....., #PB_Button_Image)
ButtonImageGadget(....., #PB_Button_PressedImage)

Je comprends le concept, mais je ne sais pas comment comment l'utiliser faute d'exemple.

Si tu as des pistes, je prends !
Merci d'avance.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Inclure des images jpg dans l'exe

Message par falsam »

Tu peux redimensionner les image avant de l'afficher dans un bouton image.
https://www.purebasic.com/french/docume ... image.html
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%
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Inclure des images jpg dans l'exe

Message par boddhi »

Sous Windows et PB, ButtonGadget et ButtonImageGadget sont construits graphiquement de la manière suivante : Bordures, marges intérieures et contenu textuel ou graphique.
Sous PB, pour ce type de gadgets, tu ne peux en rien modifier les bordures, les marges et les couleurs de premier et d'arrière-plan du texte, si ce n'est en passant par des APIs.

Ensuite, concernant les constantes :
• #Pb_Toggle s'utilise comme option des commandes ButtonGadget et ButtonImageGadget pour obtenir un bouton qui n'est pas relâché quand tu cliques dessus. Ce type de boutons aura donc deux états possibles : Relâché ou enfoncé.
Le principe : Etat initial du bouton relâché => Clic sur le bouton, son état passe et demeure à l'état 'pressé' => Clic à nouveau sur le bouton, son état retrouve son état initial c.à.d relâché.
• #Pb_Button_Image et #Pb_Button_PressedImage ne s'utilisent qu'avec la commande SetGadgetAttribute() qui permet de définir les image d'un ButtonImageGadget qui seront affichées selon que celui-ci sera relâché (état par défaut) ou 'pressé'/'enfoncé'.

Je te conseille vivement de consulter la documentation PB qui explique tout cela très simplement.
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Inclure des images jpg dans l'exe

Message par Stan_fr »

falsam a écrit : dim. 19/mars/2023 18:14 Tu peux redimensionner les image avant de l'afficher dans un bouton image.
https://www.purebasic.com/french/docume ... image.html
Oui, merci j'ai fait, mais le problème c'est que je suis obliger de tâtonner, pour trouver les nouvelles dimensions :

Par exemple j'ai un ButtonImageGadget(#Gadget, X, Y, Largeurb, Hauteurb, ImageID [, Options]),
et je ne sais pas la formule pour trouver
les dimensions ResizeImage(#Image, Largeuri, Hauteuri [, Mode])

Largeuri, et Hauteuri en fonction de Largeurb et Hauteurb à part en essayant.

Et comme je suis en train de tester différentes Largeurb et Hauteurb, c'est un peu galère :oops:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Inclure des images jpg dans l'exe

Message par falsam »

Avec l'exemple que je t'ai transmis précédemment :

■ Tu as crée tes buttons images.

Code : Tout sélectionner

ButtonImageGadget(#drapeauFR, 20, 20, 40, 40, 0)
ButtonImageGadget(#drapeauUS, 70, 20, 40, 40, 0)
■ Tu charges tes images depuis la datasection.

Code : Tout sélectionner

drapeauFR = CatchImage(#PB_Any, ?drapeauFR)
drapeauUS = CatchImage(#PB_Any, ?drapeauUS)
■ Tu redimensionnes tes images en tenant compte des dimensions de tes boutons.

Code : Tout sélectionner

ResizeImage(drapeauFR, GadgetWidth(#drapeauFR), GadgetHeight(#drapeauFR))
ResizeImage(drapeauUS, GadgetWidth(#drapeauFR), GadgetHeight(#drapeauFR))
■ Et enfin tu assignes chacune des tes images à tes boutons.

Code : Tout sélectionner

SetGadgetAttribute(#drapeauFR, #PB_Button_Image, ImageID(drapeauFR))
SetGadgetAttribute(#drapeauUS, #PB_Button_Image, ImageID(drapeauUS))
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%
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Inclure des images jpg dans l'exe

Message par Stan_fr »

boddhi a écrit : dim. 19/mars/2023 18:35 Sous Windows et PB, ButtonGadget et ButtonImageGadget sont construits graphiquement de la manière suivante : Bordures, marges intérieures et contenu textuel ou graphique.
Sous PB, pour ce type de gadgets, tu ne peux en rien modifier les bordures, les marges et les couleurs de premier et d'arrière-plan du texte, si ce n'est en passant par des APIs.

Ensuite, concernant les constantes :
• #Pb_Toggle s'utilise comme option des commandes ButtonGadget et ButtonImageGadget pour obtenir un bouton qui n'est pas relâché quand tu cliques dessus. Ce type de boutons aura donc deux états possibles : Relâché ou enfoncé.
Le principe : Etat initial du bouton relâché => Clic sur le bouton, son état passe et demeure à l'état 'pressé' => Clic à nouveau sur le bouton, son état retrouve son état initial c.à.d relâché.
• #Pb_Button_Image et #Pb_Button_PressedImage ne s'utilisent qu'avec la commande SetGadgetAttribute() qui permet de définir les image d'un ButtonImageGadget qui seront affichées selon que celui-ci sera relâché (état par défaut) ou 'pressé'/'enfoncé'.

Je te conseille vivement de consulter la documentation PB qui explique tout cela très simplement.
Merci, mais tu me crois plus avancé que je ne suis en PB, parce que je ne trouve pas que c'est expliqué simplement (ça manque d'exemple pour les débutants) !

Je suppose qu'il faut faire

ButtonImageGadget(#Gadget, X, Y, Largeur, Hauteur, ImageID ,#PB_Button_Toggle)

comme conseillé par falsam,

Puis

ButtonImageGadget(#Gadget, X, Y, Largeur, Hauteur, ImageID ,#PB_Button_Image )

ButtonImageGadget(#Gadget, X, Y, Largeur, Hauteur, ImageID ,#PB_Button_PressedImage)

en fonction d'un

GetGadgetAttribute(#Gadget, Attribut)

mais je ne sais pas quel "attribut" tester ?

Et au point où j'en suis passer par les API, pourquoi pas ?
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Inclure des images jpg dans l'exe

Message par Stan_fr »

falsam a écrit : dim. 19/mars/2023 20:23 Avec l'exemple que je t'ai transmis précédemment :

■ Tu as crée tes buttons images.

Code : Tout sélectionner

ButtonImageGadget(#drapeauFR, 20, 20, 40, 40, 0)
ButtonImageGadget(#drapeauUS, 70, 20, 40, 40, 0)
■ Tu charges tes images depuis la datasection.

Code : Tout sélectionner

drapeauFR = CatchImage(#PB_Any, ?drapeauFR)
drapeauUS = CatchImage(#PB_Any, ?drapeauUS)
■ Tu redimensionnes tes images en tenant compte des dimensions de tes boutons.

Code : Tout sélectionner

ResizeImage(drapeauFR, GadgetWidth(#drapeauFR), GadgetHeight(#drapeauFR))
ResizeImage(drapeauUS, GadgetWidth(#drapeauFR), GadgetHeight(#drapeauFR))
■ Et enfin tu assignes chacune des tes images à tes boutons.

Code : Tout sélectionner

SetGadgetAttribute(#drapeauFR, #PB_Button_Image, ImageID(drapeauFR))
SetGadgetAttribute(#drapeauUS, #PB_Button_Image, ImageID(drapeauUS))
Pour une fois ça ne marche pas : j'ai une image avec une bordure rouge, en faisant ça la bordure qui fait 3 pixels n'est pas affichée ?

Par contre en utilisant

Code : Tout sélectionner

ResizeImage(drapeauFR, GadgetWidth(#drapeauFR)-5, GadgetHeight(#drapeauFR)-5)
ResizeImage(drapeauUS, GadgetWidth(#drapeauFR)-5, GadgetHeight(#drapeauFR)-5)
elle s'affiche bien !
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Inclure des images jpg dans l'exe

Message par Stan_fr »

En fait j'ai l'impression que GadgetWidth(), GadgetHeight()

renvoient la largeur et la hauteur "bordures" du gadget incluses, mais que la zone d'affichage en tient compte, comme si on avait un masque dans GIMP ou Photoshop !

Après je peux mettre une bordure plus large à mes images, mais ce n'est pas satisfaisant intellectuellement.

Mais il reste le problème de la couleur de cette bordure du gadget.

Parce que je veux une fenêtre à fond noir, mais ce gros pavé blanc même avec une image, je n'aime pas, trop.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Inclure des images jpg dans l'exe

Message par falsam »

Stan_fr a écrit : dim. 19/mars/2023 21:57 Mais il reste le problème de la couleur de cette bordure du gadget.
Remplace tes Boutons images par des CanvasGadget()

Si tu as encore mon dossier exemple, Voici l'exemple dans lequel ta fenetre sera également noir.

Code : Tout sélectionner

EnableExplicit 

; /// DECLARATION DE L'ENUMERARION
Enumeration Window
  #mf  
EndEnumeration

Enumeration gadget
  #drapeauFR
  #drapeauUS
  #grille
  #reset
EndEnumeration

Enumeration Gadget_lang
  #G1
  #G2
  #G3
  #G4
EndEnumeration

; Langue
Enumeration Langue
  #GB 
  #FR
  #GE
EndEnumeration

; TITRES DES MENUS
Enumeration menus
  #ME_GAM
  #ME_TON
EndEnumeration  

; ITEMS DU MENU GAMME
Enumeration Gamme
  #GA_CHR
  #GA_DIAMA
  #GA_DIAMI
  #GA_PMA 
  #GA_PMI 
EndEnumeration

; ITEMS DU MENU TONALITÉ
Enumeration Tonalite #PB_Compiler_EnumerationValue
  #TO_C
  #TO_Db
  #TO_D
  #TO_Eb
  #TO_E
  #TO_F
  #TO_Gb
  #TO_G
  #TO_Ab
  #TO_A
  #TO_Bb
  #TO_B
EndEnumeration

;/// INTERFACE UTILISATEUR (FENETRE, MENU, ETC ...)
#LA_FEN = 1024
#HA_FEN = 768
#CA_SIZE = 20
#GD_SIZE = 16 * (#CA_SIZE + 2) + 2
#GD_YST = (#HA_FEN-#GD_SIZE) / 2
#GD_XST = (#LA_FEN-#GD_SIZE) / 2
#TXT_X = #GD_XST + #GD_SIZE / 2 
#TXT_Y = #GD_YST + #GD_SIZE + 10
#CLEAR = "RESET"

;/// DECLARATION DES VARIABLES
Global event, police, drapeauFR, drapeauUS
Global A$, ix, iy, xx, yy, TX_LEN, TX_HA, XF, Event, Lang

; Déclaration des procédures
Declare mk_menus (id)

;- Ca commence ici
Police = LoadFont(0, "Arial", 16, #PB_Font_Bold)

; Ouverture de la fenetre
If OpenWindow(#mf, 0, 0, #LA_FEN, #HA_FEN, "Manque un titre",  #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu)
  
  ; Si tu veux une fenetre sur fond noir, decommente la ligne qui suit
  SetWindowColor(#mf, RGB(0, 0, 0))
  
  UseJPEGImageDecoder()
    
  CanvasGadget(#drapeauFR, 20, 20, 40, 40, 0)
  CanvasGadget(#drapeauUS, 70, 20, 40, 40, 0)
  
  drapeauFR = CatchImage(#PB_Any, ?drapeauFR)
  drapeauUS = CatchImage(#PB_Any, ?drapeauUS)

  ResizeImage(drapeauFR, GadgetWidth(#drapeauFR), GadgetHeight(#drapeauFR))
  ResizeImage(drapeauUS, GadgetWidth(#drapeauFR), GadgetHeight(#drapeauFR))
  
  SetGadgetAttribute(#drapeauFR, #PB_Button_Image, ImageID(drapeauFR))
  SetGadgetAttribute(#drapeauUS, #PB_Button_Image, ImageID(drapeauUS))
  
  ; Menu FR par défaut
  mk_menus(#FR)
  
  ; Création de la grille (id 0)
  If CreateImage(0, #GD_SIZE, #GD_SIZE) And StartDrawing(ImageOutput(0))
    Box(0 , 0, #GD_SIZE, #GD_SIZE, RGB(200, 0, 0))
    
    For ix = 0 To 15
      xx = 2 + ix*(#CA_SIZE+2) ;
      For iy = 0 To 15
        yy = 2 + iy*(#CA_SIZE+2) ;
        Box(xx, yy, #CA_SIZE, #CA_SIZE, RGB(0,0,0))
      Next
    Next
    
    ; Mémorisation des dimensions du reset
    DrawingFont(Police)
    TX_LEN = TextWidth(#CLEAR)
    TX_HA = TextHeight(#CLEAR)
    StopDrawing() 
    
    ; Affichage de la grille
    ImageGadget(#grille, (#LA_FEN-#GD_SIZE)/2, (#HA_FEN-#GD_SIZE)/2, #GD_SIZE, #GD_SIZE, ImageID(0))       
  EndIf
  
  If CreateImage(1, TX_LEN+20, TX_HA+20) And StartDrawing(ImageOutput(1))
    Box(0, 0, TX_LEN+20, TX_HA+20, RGB(100,100,100))
    DrawingMode(#PB_2DDrawing_Transparent )
    DrawingFont(Police)
    DrawText(10, 10, #CLEAR, RGB(200, 200, 0))
    StopDrawing() 
    
    ; Affichage du reset
    ButtonImageGadget(#reset, (#LA_FEN-TX_LEN)/2, (#HA_FEN+#GD_SIZE)/2 + 20, TX_LEN+10, TX_HA+10, ImageID(1))       
  EndIf
  
  ; Gestion des événements
  Repeat
    Event = WaitWindowEvent() ; pour l'instant test : on affiche un message et c'est tout.
    Select Event
      Case #PB_Event_Gadget
        Select EventGadget()
            
          Case #drapeauFR
            If EventType() = #PB_EventType_LeftClick
              mk_menus(#FR)
            EndIf
          Case #drapeauUS
            If EventType() = #PB_EventType_LeftClick
            mk_menus(#GB)
            EndIf          
            Case #reset
            Debug "reset"
        EndSelect
        
      Case #PB_Event_Menu
        Select EventMenu()
          Case #GA_CHR  
            MessageRequester( A$, GetMenuItemText(#ME_GAM, #GA_CHR))
          Case #GA_DIAMA 
            MessageRequester( A$, GetMenuItemText(#ME_GAM, #GA_DIAMA)) 
          Case #GA_DIAMI  
            MessageRequester( A$, GetMenuItemText(#ME_GAM, #GA_DIAMI))
          Case #GA_PMA  
            MessageRequester( A$, GetMenuItemText(#ME_GAM, #GA_PMA)) 
          Case #GA_PMI  
            MessageRequester( A$, GetMenuItemText(#ME_GAM, #GA_PMI))
            
            ; Menu tonalié      
          Case #TO_C  
            MessageRequester( A$, "C")
          Case #TO_Db
            MessageRequester( A$, "C#")
          Case #TO_D   
            MessageRequester( A$, "D")
          Case #TO_Eb 
            MessageRequester( A$, "Eb")
          Case #TO_E
            MessageRequester( A$, "E")
          Case #TO_F  
            MessageRequester( A$, "F")
          Case #TO_Gb
            MessageRequester( A$, "F#")
          Case #TO_G 
            MessageRequester( A$, "G")
          Case #TO_Ab
            MessageRequester( A$, "Ab")
          Case #TO_A 
            MessageRequester( A$, "A")
          Case #TO_Bb 
            MessageRequester( A$, "Bb")
          Case #TO_B 
            MessageRequester( A$, "B")
        EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf 

;- Procédures
Procedure mk_menus (id)
  Select id
    Case #GB
      CreateMenu(#ME_GAM, WindowID(0)) 
      
      ; MENU GAMME
      MenuTitle("Scale")
      MenuItem(#GA_CHR, "Chromatic")
      MenuItem(#GA_DIAMA, "Major Diatonic")
      MenuItem(#GA_DIAMI, "Minor Diatonic")
      MenuItem(#GA_PMA, "Major Pentatonic")
      MenuItem(#GA_PMI , "Minor Pentatonic")
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Key")
      MenuItem(#TO_C, "C")
      MenuItem(#TO_Db, "C#")
      MenuItem(#TO_D, "D#")
      MenuItem(#TO_Eb, "Eb#")
      MenuItem(#TO_E, "E")
      MenuItem(#TO_F, "F")
      MenuItem(#TO_Gb, "F#")
      MenuItem(#TO_G, "G")
      MenuItem(#TO_Ab, "Ab")
      MenuItem(#TO_A, "A")
      MenuItem(#TO_Bb, "Bb")
      MenuItem(#TO_B, "B")
      
    Case #Fr
      CreateMenu(#ME_GAM, WindowID(0))  
      
      ; MENU GAMME
      MenuTitle("Gamme")
      MenuItem(#GA_CHR, "Chromatique")
      MenuItem(#GA_DIAMA, "Diatonique Majeure")
      MenuItem(#GA_DIAMI, "Diatonique Mineure")
      MenuItem(#GA_PMA, "Pentatonique Majeure")
      MenuItem(#GA_PMI , "Pentatonique Mineure")
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Tonalité")
      MenuItem(#TO_C, "Do")
      MenuItem(#TO_Db, "Do#")
      MenuItem(#TO_D, "Ré")
      MenuItem(#TO_Eb, "Mib")
      MenuItem(#TO_E, "Mi")
      MenuItem(#TO_F, "Fa")
      MenuItem(#TO_Gb, "Fa#")
      MenuItem(#TO_G, "Sol")
      MenuItem(#TO_Ab, "Lab")
      MenuItem(#TO_A, "La")
      MenuItem(#TO_Bb, "Sib")
      MenuItem(#TO_B, "Si")
      
    Case #GE
      CreateMenu(#ME_GAM, WindowID(0))  
      
      ; MENU GAMME
      MenuTitle("Gamme")
      MenuItem(#GA_CHR, "Chromatique")
      MenuItem(#GA_DIAMA, "Diatonique Majeure")
      MenuItem(#GA_DIAMI, "Diatonique Mineure")
      MenuItem(#GA_PMA, "Pentatonique Majeure")
      MenuItem(#GA_PMI , "Pentatonique Mineure")
      
      ; MENU TONALITÉ de DO à SI Par demis-tons
      MenuTitle("Tonalité")
      MenuItem(#TO_C, "Do")
      MenuItem(#TO_Db, "Do#")
      MenuItem(#TO_D, "Ré")
      MenuItem(#TO_Eb, "Mib")
      MenuItem(#TO_E, "Mi")
      MenuItem(#TO_F, "Fa")
      MenuItem(#TO_Gb, "Fa#")
      MenuItem(#TO_G, "Sol")
      MenuItem(#TO_Ab, "Lab")
      MenuItem(#TO_A, "La")
      MenuItem(#TO_Bb, "Sib")
      MenuItem(#TO_B, "Si")      
  EndSelect
EndProcedure

DataSection
  drapeauFR:
  IncludeBinary "fr.bmp"
  
  drapeauUS:
  IncludeBinary "us.bmp"
EndDataSection
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%
Stan_fr
Messages : 84
Inscription : mar. 07/mars/2023 20:01
Localisation : NANTES

Re: Inclure des images jpg dans l'exe

Message par Stan_fr »

falsam a écrit : dim. 19/mars/2023 22:09
Stan_fr a écrit : dim. 19/mars/2023 21:57 Mais il reste le problème de la couleur de cette bordure du gadget.
Remplace tes Boutons images par des CanvasGadget()

Si tu as encore mon dossier exemple, Voici l'exemple dans lequel ta fenetre sera également noir.
YYEESSS !

C'est exactement ça !

MERCI !
Répondre