peut-on incruster une image jpg dans une fenetre ?.

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

Re: peut-on incruster une image jpg dans une fenetre ?.

Message par falsam »

Non mais klystron tu déconnes là ? :)

Tu vas te le faire ton utilitaire.

Code : Tout sélectionner

Enumeration
  #Mainform
EndEnumeration

OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

Repeat 
  ;Coordonnée X
  Debug WindowMouseX(#Mainform)  
  ;Je te laisse le soin d'ajouter les coordonnées Y
  
Until WaitWindowEvent(10) = #PB_Event_CloseWindow
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%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: peut-on incruster une image jpg dans une fenetre ?.

Message par klystron »

bonsoir Falsam,
oui je vais voir pour faire l'utilitaire, mais j'ai des problèmes pour incruster une image, ça ne marche pas.
je ne vois pas d'où provient le hic,
en test ca passe mais je ne récupère pas l'image dans ma fenetre .
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: peut-on incruster une image jpg dans une fenetre ?.

Message par falsam »

klystron a écrit :en test ca passe mais je ne récupère pas l'image dans ma fenetre .
Tu peux montrer ton code ?
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%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: peut-on incruster une image jpg dans une fenetre ?.

Message par klystron »

Code : Tout sélectionner

   
; exemple de programme code pour initiation au purebasic.
;---------------------------------------------------------------------------------------

EnableExplicit  ; pour messages d'erreur des varables en mode test.

Enumeration Imageincrustee
  #MonImage
  #MaFeuilleDePapier 
EndEnumeration

Enumeration Fonts
  #FontGlobal
EndEnumeration

Enumeration Window
  #MaFenetre
EndEnumeration

Enumeration Gadget
  #Longueur
  #Largeur
  #Surface
  #Hypotenuse
  #Perimetre
  #Bouton_Calculer                  ; Déclarer l'ID du bouton Calculer
EndEnumeration

;-------------------Création de la fenetre et des différents gadgets-------------------------

Procedure Open_MainForm()


     LoadFont(#FontGlobal, "Arial", 12) ; hauteur 12 pixels en type Arial


 ;---------------Affectation de la font global à l'ensemble de la fenetre-----------

       SetGadgetFont(#PB_Default, FontID(#Fontglobal)) ;  police a toutes les plages.


  OpenWindow(#MaFenetre, 10, 10, 800, 600, " -Elements d'un triangle rectangle- ")



;---------Chargement d'une image (Tu donnes le nom que tu veux à la variable ici monimage )--------

UseJPEGImageDecoder() ;Decodeur obligatgoire
LoadImage(#monimage, "Data/noel.jpg")
Debug #MonImage

;--------------------On positionne le canvas---------------------

CanvasGadget(#MaFeuilleDePapier, 350,350, 50, 30)

;----------Commençons le dessin sur le canvas----------------

StartDrawing(CanvasOutput(#MaFeuilleDePapier))

;-----------------Exemple une image-----------------

DrawImage(ImageID(#MonImage),0 ,0)

;------------------Fin de lincrustation de limage ---------------------

StopDrawing()


  TextGadget(#PB_Any, 10, 35, 200, 26, "Longueur")
  StringGadget(#Longueur, 140, 35, 120, 26, "")

  TextGadget(#PB_Any, 10, 65, 200, 26, "Largeur")
  StringGadget(#Largeur, 140, 65, 120, 26, "")

  TextGadget(#PB_Any, 10, 100, 200, 26, "Surface")
  StringGadget(#Surface, 140, 100, 120, 26, "", #PB_String_ReadOnly)    ;Ce gadget sera en lecture seule
  

  TextGadget(#PB_Any, 10, 135, 200, 26, "Hypotenuse")
  StringGadget(#Hypotenuse, 140, 135, 120, 26, "", #PB_String_ReadOnly)  ;Ce gadget sera en lecture seule


  TextGadget(#PB_Any, 10, 170, 200, 26, "Perimetre")
  StringGadget(#Perimetre, 140, 170, 120, 26, "", #PB_String_ReadOnly)   ;Ce gadget sera en lecture seule


  ButtonGadget(#Bouton_Calculer, 10, 220, 120, 28, "Calculer")          ; Le bouton Calculer
EndProcedure

;-----------------Calcul de la surface d'un triangle rectangle-------------------------

Procedure CalculSurface(Longueur.f, largeur.f)
  Protected AB.f = longueur
  Protected AC.f = largeur
  Protected Resultat.f

  Resultat = (AB * AC)/2              ;Inutile de repeter le typage .f (float) à résultat car déja déclaré

  SetGadgetText(#Surface, StrF(Resultat, 3)) ;Affichage du résultat avec 3 décimales
EndProcedure

;-------------------------Calcul de l'Hypotenuse---------------------------------

Procedure Calculhypotenuse(Longueur.f, Largeur.f)
  Protected AB.f = longueur
  Protected AC.f = largeur
  Protected Resultat.f
  
  Protected BC.f                            ;C'est la longueur de l'hypotenuse à retrouver
  
  Resultat = Pow(AB,2) + Pow(AC,2)          ; puissances 2
  
  BC = Sqr(Resultat)                        ; racine carree
  
  SetGadgetText(#Hypotenuse,StrF(BC,3))     ;affichage du resultat avec 3 decimales
EndProcedure

;------------------------------calcul du perimetre du triangle------------------------------

Procedure Calculperimetre(Longueur.f, Largeur.f,BC.f)
  Protected AB.f = longueur
  Protected AC.f = largeur 
  Protected Resultat.f
  
  Resultat = AB + AC + BC

  SetGadgetText(#perimetre,StrF(Resultat,3))     ;affichage du resultat avec 3 decimales
EndProcedure

;----------------------Le programme commence ici : On ouvre la fenêtre--------------------------

Open_MainForm()

;---------------------------------Boucle événementielle---------------------------------------

Repeat
  Select WaitWindowEvent()       ;Un événement est arrivé
    Case #PB_Event_Gadget        ;Est ce un gadget qui a provoqué l'événement ?
      Select EventGadget()       ;Apparemment oui : On cherche qui

           
        Case #Bouton_Calculer      ; Je provoque le déclenchement par le bouton Calculer

;------------------------- on appelle les procedures:------------------------------------

          CalculSurface(ValF(GetGadgetText(#Longueur)),
                        ValF(GetGadgetText(#Largeur))) 
  
          Calculhypotenuse(ValF(GetGadgetText(#Longueur)),
                           ValF(GetGadgetText(#Largeur)))

          Calculperimetre(ValF(GetGadgetText(#longueur)),
                          ValF(GetGadgetText(#largeur)),
                          ValF(GetGadgetText(#hypotenuse))) 
         
      
       EndSelect 
             
      
    Case #PB_Event_CloseWindow      ;Est ce une fermeture de la fenêtre ?

      End                           ;Apparemment oui : Fermeture de la fenêtre.
     
  EndSelect  
je voici .

ton code utilitaire fonctionne, il donne la position X et Y de la fenetre . en pixel, merci bien.
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: peut-on incruster une image jpg dans une fenetre ?.

Message par falsam »

Attention au déclaration de constantes énumératives.

Code : Tout sélectionner

Enumeration Imageincrustee
  #MonImage
  #MaFeuilleDePapier ;Prendra la valeur 1
EndEnumeration

Enumeration Fonts
  #FontGlobal
EndEnumeration

Enumeration Window
  #MaFenetre
EndEnumeration

Enumeration Gadget
  #Longueur
  #Largeur ;Prendra la valeur 1
  #Surface
  #Hypotenuse
  #Perimetre
  #Bouton_Calculer             
EndEnumeration
Avec cette énumération #MaFeuilleDePapier et #Largeur prendront la valeur 1. Hors ce sont des gadget.

Tu as placé #MaFeuilleDePapier en premier sur lequel tu as déssiné ton image, puis tu as placé #Largeur qui est venu remplacé #MaFeuilleDePapier : Plus d'image.

Déclare #MaFeuilleDePapier dans Enumeration Gadget et ça fonctionnera. Laisse #Image ou il est :)
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%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: peut-on incruster une image jpg dans une fenetre ?.

Message par klystron »

Code : Tout sélectionner

   
; exemple de programme code pour initiation au purebasic.
;---------------------------------------------------------------------------------------

EnableExplicit  ; pour messages d'erreur des varables en mode test.

Enumeration Imageincrustee
  #MonImage

EndEnumeration

Enumeration Fonts
  #FontGlobal
EndEnumeration

Enumeration Window
  #MaFenetre
EndEnumeration

Enumeration Gadget
   #MaFeuilleDePapier ;prendra la valeur 1
  #Longueur
  #Largeur ;prendra la valeur 1
  #Surface
  #Hypotenuse
  #Perimetre
  #Bouton_Calculer                  ; Déclarer l'ID du bouton Calculer
EndEnumeration

;-------------------Création de la fenetre et des différents gadgets-------------------------

Procedure Open_MainForm()


     LoadFont(#FontGlobal, "Arial", 12) ; hauteur 12 pixels en type Arial


 ;---------------Affectation de la font global à l'ensemble de la fenetre-----------

       SetGadgetFont(#PB_Default, FontID(#Fontglobal)) ;  police a toutes les plages.


  OpenWindow(#MaFenetre, 10, 10, 800, 600, " -Elements d'un triangle rectangle- ")



;---------Chargement d'une image (Tu donnes le nom que tu veux à la variable ici monimage )--------

UseJPEGImageDecoder() ;Decodeur obligatgoire
LoadImage(#monimage, "Data/noel.jpg")
Debug #MonImage

;--------------------On positionne le canvas---------------------

CanvasGadget(#MaFeuilleDePapier, 350,350, 320, 230)  ; dimensions de limage pixels

;----------Commençons le dessin sur le canvas----------------

StartDrawing(CanvasOutput(#MaFeuilleDePapier))

;-----------------Exemple une image-----------------

DrawImage(ImageID(#MonImage),0 ,0)

;------------------Fin de lincrustation de limage ---------------------

StopDrawing()


  TextGadget(#PB_Any, 10, 35, 200, 26, "Longueur")
  StringGadget(#Longueur, 140, 35, 120, 26, "")

  TextGadget(#PB_Any, 10, 65, 200, 26, "Largeur")
  StringGadget(#Largeur, 140, 65, 120, 26, "")

  TextGadget(#PB_Any, 10, 100, 200, 26, "Surface")
  StringGadget(#Surface, 140, 100, 120, 26, "", #PB_String_ReadOnly)    ;Ce gadget sera en lecture seule
  

  TextGadget(#PB_Any, 10, 135, 200, 26, "Hypotenuse")
  StringGadget(#Hypotenuse, 140, 135, 120, 26, "", #PB_String_ReadOnly)  ;Ce gadget sera en lecture seule


  TextGadget(#PB_Any, 10, 170, 200, 26, "Perimetre")
  StringGadget(#Perimetre, 140, 170, 120, 26, "", #PB_String_ReadOnly)   ;Ce gadget sera en lecture seule


  ButtonGadget(#Bouton_Calculer, 10, 220, 120, 28, "Calculer")          ; Le bouton Calculer
EndProcedure

;-----------------Calcul de la surface d'un triangle rectangle-------------------------

Procedure CalculSurface(Longueur.f, largeur.f)
  Protected AB.f = longueur
  Protected AC.f = largeur
  Protected Resultat.f

  Resultat = (AB * AC)/2              ;Inutile de repeter le typage .f (float) à résultat car déja déclaré

  SetGadgetText(#Surface, StrF(Resultat, 3)) ;Affichage du résultat avec 3 décimales
EndProcedure

;-------------------------Calcul de l'Hypotenuse---------------------------------

Procedure Calculhypotenuse(Longueur.f, Largeur.f)
  Protected AB.f = longueur
  Protected AC.f = largeur
  Protected Resultat.f
  
  Protected BC.f                            ;C'est la longueur de l'hypotenuse à retrouver
  
  Resultat = Pow(AB,2) + Pow(AC,2)          ; puissances 2
  
  BC = Sqr(Resultat)                        ; racine carree
  
  SetGadgetText(#Hypotenuse,StrF(BC,3))     ;affichage du resultat avec 3 decimales
EndProcedure

;------------------------------calcul du perimetre du triangle------------------------------

Procedure Calculperimetre(Longueur.f, Largeur.f,BC.f)
  Protected AB.f = longueur
  Protected AC.f = largeur 
  Protected Resultat.f
  
  Resultat = AB + AC + BC

  SetGadgetText(#perimetre,StrF(Resultat,3))     ;affichage du resultat avec 3 decimales
EndProcedure

;----------------------Le programme commence ici : On ouvre la fenêtre--------------------------

Open_MainForm()

;---------------------------------Boucle événementielle---------------------------------------

Repeat
  Select WaitWindowEvent()       ;Un événement est arrivé
    Case #PB_Event_Gadget        ;Est ce un gadget qui a provoqué l'événement ?
      Select EventGadget()       ;Apparemment oui : On cherche qui

           
        Case #Bouton_Calculer      ; Je provoque le déclenchement par le bouton Calculer

;------------------------- on appelle les procedures:------------------------------------

          CalculSurface(ValF(GetGadgetText(#Longueur)),
                        ValF(GetGadgetText(#Largeur))) 
  
          Calculhypotenuse(ValF(GetGadgetText(#Longueur)),
                           ValF(GetGadgetText(#Largeur)))

          Calculperimetre(ValF(GetGadgetText(#longueur)),
                          ValF(GetGadgetText(#largeur)),
                          ValF(GetGadgetText(#hypotenuse))) 
         
      
       EndSelect 
             
      
    Case #PB_Event_CloseWindow      ;Est ce une fermeture de la fenêtre ?

      End                           ;Apparemment oui : Fermeture de la fenêtre.
     
  EndSelect

ForEver
  
c'est bon, ça fonctionne bien, merci Falsam pour ton aide.

donc les énumérations sont assez critiques , sur certains codes.
il faut le savoir.
comment on fait pour imprimer un code avec l'éditeur purebasic ?
bonne soirée a tous.

A+
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: peut-on incruster une image jpg dans une fenetre ?.

Message par microdevweb »

Bonsoir klystron,

Sur ce lien http://www.purebasic.fr/french/viewtopic.php?t=9626 :arrow: une réponse je penses.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: peut-on incruster une image jpg dans une fenetre ?.

Message par klystron »

Ok merci pour les infos.

voici la fenetre une fois finie :

http://www.imageshotel.org/images/image ... iangle.jpg

A+

Image
Répondre