Page 2 sur 2

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

Publié : mer. 17/déc./2014 16:56
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

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

Publié : mer. 17/déc./2014 17:01
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 .

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

Publié : mer. 17/déc./2014 17:09
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 ?

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

Publié : mer. 17/déc./2014 17:15
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.

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

Publié : mer. 17/déc./2014 17:34
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 :)

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

Publié : mer. 17/déc./2014 17:38
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+

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

Publié : mer. 17/déc./2014 20:23
par microdevweb
Bonsoir klystron,

Sur ce lien http://www.purebasic.fr/french/viewtopic.php?t=9626 :arrow: une réponse je penses.

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

Publié : mer. 17/déc./2014 21:50
par klystron
Ok merci pour les infos.

voici la fenetre une fois finie :

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

A+

Image