Re: image de fond
Publié : mer. 24/août/2016 15:40
Allez fait un petite code minimaliste comme ceux que tu as pu voir en y ajoutant un bouton un textgadget et un string.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.JohnJohnsonSHERMAN a écrit :Et voila !
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
Mais tes gadgets eux disparaissent jusqu'à ce que tu re-cliques dessus !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.
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
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.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.
JohnJohnsonSHERMAN a écrit :Ok, je sors me pendre dehors![]()
![]()
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***
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
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
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