FR4NK13 m'a posé une question sur skype à ce sujet, plutôt que de lui montré un exemple je poste sur le forum pour que cela profite éventuellement à d'autres
Etape 1 enregistrez l'image ci-dessous dans le même répertoire que le fichier Pb avec le nom "Logo.png"
Et voici le code
Code : Tout sélectionner
; Placer une image de fond et centrer des boutons dans une fenêtre
; AUTHOR : microdevWeb
;
Enumeration
#MainForm
#MainCanvas
#Bt_play
#Bt_exit
#IMG_BG
EndEnumeration
EnableExplicit ; les variable doivent être déclarée
UsePNGImageDecoder() ; on va traité des images png
; on charge l'image
If Not LoadImage(#IMG_BG,"Logo.png")
MessageRequester("ERRERU chargement image","L'image n'a pas peu être chargée",#PB_MessageRequester_Error)
End
EndIf
; procédure pour dessiner l'image
Procedure drawBg()
Protected wc = GadgetWidth(#MainCanvas) ; largeur du canvas
Protected hc = GadgetHeight(#MainCanvas); hauteur du canvas
Protected wi = ImageWidth(#IMG_BG) ; largeur de l'image de fond
Protected hi = ImageHeight(#IMG_BG) ; hauteur de l'image de fond
Protected x = (wc / 2) - (wi /2) ; le centre en X
Protected y = (hc / 2) - (hi /2) ; le centre en y
StartDrawing(CanvasOutput(#MainCanvas))
; on efface avec la même couleur que le fond de l'image
Box(0,0,wc,hc,$FF666666)
; on dessine l'image
DrawImage(ImageID(#IMG_BG),x,y)
StopDrawing()
EndProcedure
; procédure pour placer les boutons
Procedure positionButtons()
Protected wc = GadgetWidth(#MainCanvas) ; largeur du canvas
Protected hc = GadgetHeight(#MainCanvas); hauteur du canvas
Protected x = (wc/2) - 50
; pour le centrage je remonte le premier bouton de 75 pxl
Protected y = (hc/2) - 75
ResizeGadget(#Bt_play,x,y,#PB_Ignore,#PB_Ignore)
ResizeGadget(#Bt_exit,x,y + 75,#PB_Ignore,#PB_Ignore)
EndProcedure
; Procédure pour quitter le program
Procedure exit()
CloseWindow(#MainForm)
End
EndProcedure
; procédure de redimentionnent
Procedure eventResize()
; je redimentionne le canvas
ResizeGadget(#MainCanvas,0,0,WindowWidth(#MainForm),WindowHeight(#MainForm))
; je dessine le fond
drawBg()
; je repositionne les bouttons
positionButtons()
EndProcedure
; Procédure de démarage du program
Procedure start()
; je charge l'image
; ouverture de la fenêtre principal
OpenWindow(#MainForm,0,0,800,600,"Fond d'écran",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget)
; on place un canvas pour le fond d'écran qui servira également de contaioner
CanvasGadget(#MainCanvas,0,0,800,600,#PB_Canvas_Container)
; on dessine l'image
drawBg()
; j'ajoute des boutons que je positonnerais plus avec une procédure
ButtonGadget(#Bt_play,0,0,100,30,"Jouer")
ButtonGadget(#Bt_exit,0,0,100,30,"Quitter")
; je ferme le container
CloseGadgetList()
; je positionne les boutons
positionButtons()
; mise en place des callbacks
BindEvent(#PB_Event_CloseWindow,@exit(),#MainForm)
BindEvent(#PB_Event_SizeWindow,@eventResize(),#MainForm)
EndProcedure
start()
Repeat : WaitWindowEvent() : ForEver