Page 2 sur 2

Re: image de fond

Publié : mer. 24/août/2016 15:40
par falsam
JohnJohnsonSHERMAN a écrit :Et voila !
Allez fait un petite code minimaliste comme ceux que tu as pu voir en y ajoutant un bouton un textgadget et un string.

Re: image de fond

Publié : mer. 24/août/2016 16:04
par JohnJohnsonSHERMAN
Ok, je sors me pendre dehors :cry: :oops:

Code : Tout sélectionner

Enumeration
  #Fenetre
  #ImageDeFond
  #Bouton
  #Text
  #String
EndEnumeration

LoadImage(#ImageDeFond,"D:\Images\Non classées\sherman.bmp")

OpenWindow(#Fenetre,0,0,600,400,"Essai",#PB_Window_ScreenCentered)
StartDrawing(WindowOutput(#Fenetre))
DrawImage(ImageID(#ImageDeFond),0,0,600,400)
StopDrawing()
ButtonGadget(#Bouton,10,10,100,30,"Zoli bouton")
TextGadget(#Text,10,50,200,20,"Ceci n'est pas un texte.")
StringGadget(#String,10,100,100,30,"Entrez du texte")

Repeat
  event=WaitWindowEvent()
  Select event
    Case #PB_Event_Gadget
      ;Faire ce qu'on veut des gadgets...
    Case #PB_Event_Repaint;En cas d'effacement on redessine
      StartDrawing(WindowOutput(#Fenetre))
      DrawImage(ImageID(#ImageDeFond),0,0,600,400)
      StopDrawing()
  EndSelect
Until event = #PB_Event_CloseWindow
C'est bizarre quand même que les gadgets ne soient pas affichés aprés et donc dessus le fond de la fenêtre... A mon avis le probléme vient du fait que l'affichage du gadget est vu comme un événement nécessitant #PB_Event_Repaint


***JohnJohnsonSHERMAN part bouder (et finir une maquette) loin du clavier :oops: ***

Re: image de fond

Publié : mer. 24/août/2016 16:12
par Ar-S
JohnJohnsonSHERMAN a écrit : En effet, si la fenêtre est masquée, le fond disparait. Ces quelques lignes redessinent alors l'image sur la fenetre.
Mais tes gadgets eux disparaissent jusqu'à ce que tu re-cliques dessus !

----edit----
Oups tu viens de le voir :D


Le plus simple comme l'a dit majikeyric c'est d'utiliser un gadget image que l'on "disable"
Je n'utilise pas l'éditeur mais ça doit pas être difficile de le faire avec.

Code : Tout sélectionner



; Creation du drapeau
Procedure Creation()
  image = CreateImage(1,270,296,32,$0)
  StartDrawing(ImageOutput(1))
  Box(0, 0, 90, 296,$FF0000)
  Box(90, 0, 90, 296,$FFFFFF)
  Box(180, 0, 90, 296,$0000FF)
  StopDrawing()
EndProcedure



  
;                  PROGRAMME PRINCIPAL
; ----------------------------------------------------
; Création de l'image du drapeau
; ----------------------------------------------------

Creation()

 If OpenWindow(0, 0, 0, 270, 296, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   
   ImageGadget(10,0,0,270,296,ImageID(1))
   DisableGadget(10,1)
    
   ButtonGadget  (2, 40, 170, 200, 30, "Fermer")
   
   Repeat
     Event = WaitWindowEvent()
     
     Select Event

         
       Case #PB_Event_Gadget
         Select EventGadget()
           Case 2 
              Quite=1
         EndSelect
            
     EndSelect
   Until Event = #PB_Event_CloseWindow Or Quite = 1

End
EndIf


Re: image de fond

Publié : mer. 24/août/2016 16:23
par Marc56
Ar-S a écrit : Le plus simple comme l'a dit majikeyric c'est d'utiliser un gadget image que l'on "disable"

Je n'utilise pas l'éditeur mais ça doit pas être difficile de le faire avec.
Oui, cela se fait très bien avec le Form Designer, c'est ce que j'ai montré (voir exemple page précédente) après avoir vu l'exemple proposé par majikeyric.

Faire un DisableGadget de l'image est effectivement le moyen simple et logique. :idea:

:wink:

Re: image de fond

Publié : mer. 24/août/2016 17:18
par Zorro
JohnJohnsonSHERMAN a écrit :Ok, je sors me pendre dehors :cry: :oops:

C'est bizarre quand même que les gadgets ne soient pas affichés aprés et donc dessus le fond de la fenêtre... A mon avis le probléme vient du fait que l'affichage du gadget est vu comme un événement nécessitant #PB_Event_Repaint


***JohnJohnsonSHERMAN part bouder (et finir une maquette) loin du clavier :oops: ***

non, moi j'aurai fait comme toi ;)

il te manque juste un peu d'experience ...:lol:

Code : Tout sélectionner

Enumeration
		#Fenetre
		#ImageDeFond
		#Bouton
		#Text
		#String
EndEnumeration
CreateImage(#ImageDeFond,640,400,32,$0)
StartDrawing(ImageOutput(#imagedefond))
		For i=1 to 200
				Circle(Random(620,20),Random(380,20),Random(50,10),Rgb(random(255,50),random(255,50),random(255,50)))
		Next i
StopDrawing()


OpenWindow(#Fenetre,0,0,600,400,"Essai",#PB_Window_ScreenCentered)
StartDrawing(WindowOutput(#Fenetre))
		DrawImage(ImageID(#ImageDeFond),0,0,600,400)
StopDrawing()
ButtonGadget(#Bouton,10,10,100,30,"Zoli bouton")
TextGadget(#Text,10,50,200,20,"Ceci n'est pas un texte.")
StringGadget(#String,10,100,100,30,"Entrez du texte")

Repeat
		event=WaitWindowEvent(2)
		Select event
		Case #PB_Event_Gadget
				;Faire ce qu'on veut des gadgets...
		Case #PB_Event_Repaint;En cas d'effacement on redessine				
				StartDrawing(WindowOutput(#Fenetre))
						DrawImage(ImageID(#ImageDeFond),0,0,600,400)
				StopDrawing()
				SetActiveGadget(#Bouton)
				SetActiveGadget(#Text)
				SetActiveGadget(#String)			
		EndSelect
		
Until event = #PB_Event_CloseWindow 

Re: image de fond

Publié : mer. 24/août/2016 17:30
par Marc56
Avec les méthode DisableGadget (image), ça fait moins mal aux yeux 8)

Code : Tout sélectionner

 Enumeration
      #Fenetre
      #ImageDeFond
      #Bouton
      #Text
      #String
      #image
EndEnumeration
CreateImage(#ImageDeFond,640,400,32,$0)
StartDrawing(ImageOutput(#imagedefond))
      For i=1 To 200
            Circle(Random(620,20),Random(380,20),Random(50,10),RGB(Random(255,50),Random(255,50),Random(255,50)))
      Next i
StopDrawing()


OpenWindow(#Fenetre,0,0,600,400,"Essai",#PB_Window_ScreenCentered)
; StartDrawing(WindowOutput(#Fenetre))
;       DrawImage(ImageID(#ImageDeFond),0,0,600,400)
; StopDrawing()
; --- Ajout
ImageGadget(#image, 0,0,600,400, ImageID(#imagedefond))
DisableGadget(#image, 1)
; --- Fin ajout
ButtonGadget(#Bouton,10,10,100,30,"Zoli bouton")
TextGadget(#Text,10,50,200,20,"Ceci n'est pas un texte.")
StringGadget(#String,10,100,100,30,"Entrez du texte")


Repeat
      event=WaitWindowEvent(2)
      Select event
          Case #PB_Event_Gadget
              If EventGadget() = #Bouton
                  MessageRequester("Yeah!", "Less is more", 64)
              EndIf
              
            ;Faire ce qu'on veut des gadgets...
;       Case #PB_Event_Repaint;En cas d'effacement on redessine            
;             StartDrawing(WindowOutput(#Fenetre))
;                   DrawImage(ImageID(#ImageDeFond),0,0,600,400)
;             StopDrawing()
;             SetActiveGadget(#Bouton)
;             SetActiveGadget(#Text)
;             SetActiveGadget(#String)         
      EndSelect
      
Until event = #PB_Event_CloseWindow
Bon, d'accord, on ne peut alors rien faire avec la souris sur l'image.
:wink:

Re: image de fond

Publié : mer. 24/août/2016 17:45
par Ar-S
@zorro
Lancer un SetActiveGadget pour tous les gadgets ça va si tu en as pas tout un tas mais en cas d'interface complexe c'est tout de même bien redondant.
Le disable c'est tout de même bien plus light.

Re: image de fond

Publié : mer. 24/août/2016 18:05
par Zorro
ho bah zavez qu'a faire comme ça

plus de soucis :) (deplacez la fenetre )

Code : Tout sélectionner

Declare.l mycallback(hwnd.l,umsg.l,wparam.l,lparam.l)


If OpenWindow(0,100,100,320,240,"",#PB_Window_SystemMenu|#PB_Window_SizeGadget)
		ButtonGadget(1,5,5,100,50,"Hello")
		EditorGadget(2,5,60,100,175)
		SetWindowCallback(@myCallback(),0)
		InvalidateRect_(WindowID(0),0,1)
		Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf 

Procedure.l myCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
		Select uMsg
		Case #WM_ERASEBKGND
				ProcedureReturn
		Case #WM_PAINT
				For i=1 To 2
						x = GadgetX(i)
						y = GadgetY(i)
						SetRect_(Rect.RECT,x,y,x+GadgetWidth(i),y+GadgetHeight(i))
						ValidateRect_(hWnd,Rect)
						RedrawWindow_(GadgetID(i),0,0,$407)
				Next
				PaintDesktop_(BeginPaint_(hWnd,ps.PAINTSTRUCT))
				EndPaint_(hWnd,ps)
		Case #WM_SIZING,#WM_MOVING
				InvalidateRect_(hWnd,0,1)
		EndSelect
		ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
; 
; Epb 

Re: image de fond

Publié : mer. 24/août/2016 20:47
par venom
Sympa ce petit code merci dobro :wink:






@++