Page 1 sur 1

pb pour deplacer gadget en fonction de #PB_Event_SizeWindow

Publié : dim. 05/févr./2006 11:35
par david
Dans le code ci-après mon bouton apparaît à l'extremité droite de la fenetre. J'aurais voulu qu'il en soir toujours ainsi, même si celle-ci est redimensionné (deplacement du bouton).

J'arrive bien a tester #PB_Event_SizeWindow pour action a accomplir en cas de redimensionnement de la fenetre.
posix = WindowHeight() reprend bien sa nouvelle valeur mais apres je cale!

je suis bien allé voir du coté de MoveWindow et ResizeWindow... mais je ne vois plus ce que je dois faire. si qq'un peut m'aider svp.

Code : Tout sélectionner

   Enumeration 
  #Window_0 
  #Button_0 
EndEnumeration 

taillex= 200
tailley = 200
posix = 100
posiy = 100
;
;
;
;

If OpenWindow ( #Window_0 , posix, posiy, taillex, tailley, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Compteur Atouts" ) 
  If CreateGadgetList ( WindowID ())
     ButtonGadget ( #Button_0 , taillex-30, posiy, 30, 30, "clic" ) 

EndIf




Repeat

    Select WaitWindowEvent () ; 
    
         Case #Button_0 ;  
                  a=2
      Case #PB_Event_CloseWindow ;
        Quit=1 
      
      Case #PB_Event_SizeWindow ; je teste quand la taille de la fenetre est modifiée 
     posix = WindowHeight() 
  
  ; MoveWindow(FenetreX_PositionOrigine, FenetreY_PositionOrigine) 
  ; ResizeWindow(posix, posiy)
   
    EndSelect 
    
  Until Quit=1 
EndIf 

Publié : dim. 05/févr./2006 11:50
par olivier
Tiens rajoute cela apres
Case #PB_Event_SizeWindow

Code : Tout sélectionner

taillex=WindowWidth()
ResizeGadget(#Button_0,taillex-30,-1,-1,-1)

Le -1 correspond à aucun changement

Bon courage

#PB_Event_SizeWindow avec Image a redimensionner dans fenetr

Publié : lun. 06/févr./2006 8:58
par david
ben ce que tu m'as dit ça fontionne impeccable. en fait je ne modifiait pas
le bon objet. alors là par contre quand je tire ton bouton se déplace toujours et pourtant de la meme facon je n'arrive pas a etirer mon image a coté du bouton
pourtant quand je l'ai definie avec
ResizeImage ( #image1 , taillex-20, tailley ) et
ImageGadget ( #image_gadget1 , 0,0,taillex,tailley, UseImage ( #image1 )) elle apparait correctement. pourquoi quand j'etire ma fenetre je n'arrive pas a etirer mon image????

Code : Tout sélectionner

Enumeration 
  #Window_0 
  #Button_0 
  #image1
  #image_gadget1
EndEnumeration 

taillex= 200
tailley = 200
posix = 100
posiy = 100
;
path1$="C:\_work\gaby1.jpg";************
;
UseJPEGImageDecoder ()
LoadImage ( #image1 , path1$ )
ResizeImage ( #image1 , taillex-20, tailley )

;

If OpenWindow ( #Window_0 , posix, posiy, taillex, tailley, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Tire" ) 
  If CreateGadgetList ( WindowID ())
     ImageGadget ( #image_gadget1 , 0,0,taillex,tailley, UseImage ( #image1 )) 
     ButtonGadget ( #Button_0 , taillex-30, posiy, 30, 30, "clic" ) 

EndIf




Repeat

    Select WaitWindowEvent () ; 
    
         Case #Button_0 ;  
                  a=2
      Case #PB_Event_CloseWindow ;
        Quit=1 
      
     Case #PB_Event_SizeWindow  
      taillex=WindowWidth() 
      tailley = WindowHeight() 
      
 ResizeImage ( #image1 , taillex-20, tailley ) ;*************
ResizeGadget(#image_gadget1,-1,-1,taillex-20, tailley) ;***********

 ResizeGadget(#Button_0,taillex-30,-1,-1,-1) 
     
   
    EndSelect 
    
  Until Quit=1 
EndIf 

Publié : lun. 06/févr./2006 9:36
par olivier
Un gadget image n'a pas besoins d'être retailler, juste sa position est importante donc ici on peut le retirer.

ResizeGadget(#image_gadget1,-1,-1,taillex-20, tailley)

Ne sert à rien

Tu as bien retaillé ton image, il faut maintenant initialiser le gadget image avec la nouvel image retaillé :

Code : Tout sélectionner

ResizeImage ( #image1 , taillex-20, tailley ) 
SetGadgetState(#image_gadget1,UseImage(#image1)) 
Tu vas remarquer que ton image se dégrade a force de la retailler. Moi je la reload à chaque fois...

Bon courage

Publié : lun. 06/févr./2006 9:58
par Dr. Dri
olivier a écrit :Tu vas remarquer que ton image se dégrade a force de la retailler. Moi je la reload à chaque fois...
Plutôt en faire un copie, ca prend beaucoup moins de temps processeur et c'est même plus simple à gérer...

Dri

Publié : lun. 06/févr./2006 10:16
par david
comment faire une copie et la ré-utiliser?
tu la Load une deuxieme fois sous un nom différent
pour la réutiliser apres?

Publié : lun. 06/févr./2006 10:23
par Dr. Dri
copie, en anglais copy, y'a plus qu'a chercher dans l'aide copy + image

Dri -_-