image de fond

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: image de fond

Message 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.
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%
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: image de fond

Message 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: ***
"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
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: image de fond

Message 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

~~~~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
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: image de fond

Message 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:
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: image de fond

Message 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 
Dernière modification par Zorro le mer. 24/août/2016 17:37, modifié 1 fois.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: image de fond

Message 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:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: image de fond

Message 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.
~~~~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
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: image de fond

Message 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 
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: image de fond

Message par venom »

Sympa ce petit code merci dobro :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre