image de fond
image de fond
Bonjour, j'essaye de mettre une iamge de fond a ma fenetre, mais elle vient devant et je ne peux pas metre des choses dessus.
il y a il un moyen pour la mettre derriere? je parle de l'editeur de fenetre
merci
il y a il un moyen pour la mettre derriere? je parle de l'editeur de fenetre
merci
Windows 10 x64 -- Purebasic 5.70 LTS x86
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: image de fond
Tu ne pourras pas le faire avec l'éditeur de formulaire ni même en codant nativement. Il y aura superposition des gadgets et certains risquent de ne plus être accessibles.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: image de fond
Sans éditeur et pour windows uniquement... (utilisation d' API)
Code : Tout sélectionner
; ----------------------------------------------------
; Petites Macros pour simplifier la lisibilité du code
; ----------------------------------------------------
Macro SetBackgroundImage(MyWindowID,MyImage)
; API créant la brosse de l'image
brush = CreatePatternBrush_(MyImage)
; On dessine l'image au fond de la fenêtre via un autre API
SetClassLong_(WindowID(MyWindowID),#GCL_HBRBACKGROUND,brush)
EndMacro
Macro DrawFlag(c1,c2,c3)
Box(0, 0, 90, 296,c1)
Box(90, 0, 90, 296,c2)
Box(180, 0, 90, 296,c3)
EndMacro
; PROGRAMME PRINCIPAL
; ----------------------------------------------------
; Création de l'image du drapeau
; ----------------------------------------------------
image = CreateImage(0,296,296,32,$0)
StartDrawing(ImageOutput(0))
DrawFlag($FF0000,$FFFFFF,$0000FF)
StopDrawing()
If OpenWindow(0, 0, 0, 270, 296, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetBackgroundImage(0,Image)
ButtonGadget (1, 40, 170, 200, 30, "Fermer")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Quite=1
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow Or Quite = 1
; a la fin de ton prog, on libère la brosse
DeleteObject_(brush)
End
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: image de fond
sans API.
image : http://majikeyric.free.fr/purebasic/background.jpg
Code : Tout sélectionner
Enumeration
#MainWindow
#Background
#bgImage
#Button
#TitleFont
#Candidate
#CandidateFont
EndEnumeration
UseJPEGImageDecoder()
LoadImage(#bgImage, "background.jpg")
LoadFont(#TitleFont, "Times New Roman", 24, #PB_Font_Italic)
LoadFont(#CandidateFont, "Times New Roman", 12, #PB_Font_Italic)
wFlags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Invisible
OpenWindow(#MainWindow, #PB_Any, #PB_Any, 1000, 550, "Image Background", wFlags)
StartDrawing(ImageOutput(#bgImage))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(#TitleFont))
DrawText(60, 30, "Stairway to Heaven...", RGB(0, 0, 255))
StopDrawing()
ImageGadget(#Background, 0, 0, 1000, 550, ImageID(#bgImage))
StringGadget(#Candidate, 100, 230, 190, 30, "enter your name here...")
ButtonGadget(#Button, 100, 265, 190, 30, "E N T E R !")
SetGadgetFont(#Candidate, FontID(#CandidateFont))
DisableGadget(#Background, #True)
DisableGadget(#Button, #True)
HideWindow(#MainWindow, #False)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
appQuit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case #Button
HideGadget(#Candidate, #True)
HideGadget(#Button, #True)
StartDrawing(ImageOutput(#bgImage))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(#TitleFont))
DrawText(770, 250, "Goodbye...", RGB(255, 200, 255))
StopDrawing()
SetGadgetState(#Background, ImageID(#bgImage))
Case #Candidate
Select EventType()
Case #PB_EventType_Focus
SetGadgetText(#Candidate, "")
Case #PB_EventType_Change
If Trim(GetGadgetText(#Candidate))
DisableGadget(#Button, #False)
Else
DisableGadget(#Button, #True)
EndIf
EndSelect
EndSelect
EndSelect
Until appQuit = 1
Re: image de fond
L’éditeur de Forms à quelques subtilités.
Il affiche les objets dans l'ordre de création, mais la prévisualisation est différente de l'édition.
Si pendant cette conception, tes objets semblent disparaitre, il suffit de changer l'ordre en allant sur l'onglet Objets de la palette d'outils.
(onglet à droite de l'onglet ouvert par défaut). Tu fais un drag'n'drop des objets pour avoir l'image avant les objets
Exemple de gadget sur image
(genéré par le form designer)


Il affiche les objets dans l'ordre de création, mais la prévisualisation est différente de l'édition.
Si pendant cette conception, tes objets semblent disparaitre, il suffit de changer l'ordre en allant sur l'onglet Objets de la palette d'outils.
(onglet à droite de l'onglet ouvert par défaut). Tu fais un drag'n'drop des objets pour avoir l'image avant les objets
Exemple de gadget sur image
(genéré par le form designer)
Code : Tout sélectionner
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;
Enumeration FormWindow
#Window_0
EndEnumeration
Enumeration FormGadget
#Image_0
#Button_0
EndEnumeration
Enumeration FormImage
#Img_Window_0_0
EndEnumeration
LoadImage(#Img_Window_0_0,"C:\Program Files\PureBasic\Examples\Sources\Data\PureBasicLogo.bmp")
Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
OpenWindow(#Window_0, x, y, width, height, "", #PB_Window_SystemMenu)
ImageGadget(#Image_0, 10, 10, 381, 68, ImageID(#Img_Window_0_0))
ButtonGadget(#Button_0, 15, 15, 100, 25, "Hello World")
EndProcedure
; --- Ajouté pour rendre le code généré par le form designer autonome
OpenWindow_0()
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend

- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: image de fond
Marc si tu exécutes ton code, tu verras que ton bouton est inaccessible. Ce qui confirme mon commentaire.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: image de fond
Il suffit de cocher la case Désactivé sur le gadget image,
ce qui ajoute la ligne DisableGadget(#Image_0, 1)

ce qui ajoute la ligne DisableGadget(#Image_0, 1)
Code : Tout sélectionner
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;
Enumeration FormWindow
#Window_0
EndEnumeration
Enumeration FormGadget
#Image_0
#Button_0
EndEnumeration
Enumeration FormImage
#Img_Window_0_0
EndEnumeration
LoadImage(#Img_Window_0_0,"C:\Program Files\PureBasic\Examples\Sources\Data\PureBasicLogo.bmp")
Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
OpenWindow(#Window_0, x, y, width, height, "", #PB_Window_SystemMenu)
ImageGadget(#Image_0, 10, 10, 381, 68, ImageID(#Img_Window_0_0))
DisableGadget(#Image_0, 1)
ButtonGadget(#Button_0, 15, 15, 100, 25, "Hello World")
EndProcedure
; --- Ajouté pour rendre le code généré par le form designer autonome
OpenWindow_0()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_0
MessageRequester("Hello", "Hello World")
EndSelect
EndSelect
ForEver

Dernière modification par Marc56 le mer. 24/août/2016 12:17, modifié 1 fois.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: image de fond
majikeyric j'ai testé ton code et le souci est le même. Le bouton est parfois accessible et quand on clique dessus il disparaît.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: image de fond
le disable marche bien, mais quand je veux creer un nouveau gadget et je clique sur l'endroit de la fenetre ou je veux le positionner, ca fait bouger l'image
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: image de fond

C'est parfois le rectangle de sélection d'objet (+1 pixel autour) qui donne une illusion de mouvement de l'image.
Re: image de fond
je me suis mal exprime
quand je veux creer un nouveau gadget, disons un boutton, je clique e maintien clique et bouge la souris et ca fait la forme de mon gadget
et bien a la place de faire ca, ca bouge l'image en drag-drop, et ca ne cree pas le gadget
quand je veux creer un nouveau gadget, disons un boutton, je clique e maintien clique et bouge la souris et ca fait la forme de mon gadget
et bien a la place de faire ca, ca bouge l'image en drag-drop, et ca ne cree pas le gadget
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: image de fond
Je n'arrive pas à reproduire ce problème, mais c'est peut-être parce que je fais pas de la même manière ?
Pour ajouter un objet (ex: un bouton) je fais un doucle-clic sur l'objet dans la liste,
ce qui me met le nouvel objet toujours en haut à gauche (à 10, 10)
ensuite je le déplace et je le redimensionne.
Je vérifie toujours que les poignées de sélection sont sur l'objet créé.
Quand il y a beaucoup d'objets, je sélectionne le bon dans la liste et non pas sur la fenêtre, car le Form Designer perd parfois le focus
Pour ajouter un objet (ex: un bouton) je fais un doucle-clic sur l'objet dans la liste,
ce qui me met le nouvel objet toujours en haut à gauche (à 10, 10)
ensuite je le déplace et je le redimensionne.
Je vérifie toujours que les poignées de sélection sont sur l'objet créé.
Quand il y a beaucoup d'objets, je sélectionne le bon dans la liste et non pas sur la fenêtre, car le Form Designer perd parfois le focus
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: image de fond
Le bouton est accessible quand on rentre quelque chose dans le StringGadget puis il disparait quand on clique dessus... rien d'anormal quand on lit le codefalsam a écrit :majikeyric j'ai testé ton code et le souci est le même. Le bouton est parfois accessible et quand on clique dessus il disparaît.

- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: image de fond
Et paf dans ma face :pmajikeyric a écrit :rien d'anormal quand on lit le code
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: image de fond
Juste une idée comme ca...
On dessine directement sur le fond de la fenêtre, les gadgets se positionneront dessus ensuite. Utiliser uniquement des gadgets fait que l'application ne sait pas bien lesquels mettre au dessus ou en dessous...
Et ne pas oublier d'inclire dans la boucle d'événements
En effet, si la fenêtre est masquée, le fond disparait. Ces quelques lignes redessinent alors l'image sur la fenetre.
Et voila !

Code : Tout sélectionner
StartDrawing(WindowOutput(#MaFenetre))
DrawImage(ImageID(#MonImageDeFond),0,0,LargeurFenetre,HauteurFenetre)
StopDrawing()
Et ne pas oublier d'inclire dans la boucle d'événements
Code : Tout sélectionner
Case #PB_Event_Repaint
StartDrawing(WindowOutput(#MaFenetre))
DrawImage(ImageID(#MonImageDeFond),0,0,LargeurFenetre,HauteurFenetre)
StopDrawing()
Et voila !

"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé