Page 1 sur 1

Ascenseur dans une fenêtre

Publié : mar. 18/juil./2023 8:33
par pat
Bonjour,

L'aide de PB pour mettre l'image dans un gadget image :

UsePNGImageDecoder()
If OpenWindow(0, 0, 0, 245, 105, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ShowScrollBar_(WindowID(0),#SB_BOTH,#True);montre les deux ascenseurs
If LoadImage(0, "Image.png"); changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
ImageGadget(0, 10, 10, 100, 83, ImageID(0)); imagegadget standard
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

J'ai rajouté le ShowScrollBar_ qui montre bien les 2 ascenseurs.

Comment faire pour que les ascenseurs soient gérées par la fenêtre ?
Je pense qu'il faut utiliser un callback.

Mettre une image plus grande que la fenêtre pour voir le résultat.

Re: Ascenseur dans une fenêtre

Publié : mar. 18/juil./2023 16:34
par Mesa
Je trouve qu'il est plus simple d'utiliser un scrollarea:

Code : Tout sélectionner

Procedure BindScrollDatas()
	SetWindowTitle(0, "ScrollAreaGadget " +
	                  "(" +
	                  GetGadgetAttribute(0, #PB_ScrollArea_X) +
	                  "," +                      
	                  GetGadgetAttribute(0, #PB_ScrollArea_Y) +
	                  ")" )
EndProcedure

Procedure  Resize()
	; 	ResizeGadget(0,0,0,WindowWidth(0), WindowHeight(0))
	ResizeGadget(0, #PB_Ignore, #PB_Ignore, WindowWidth(EventWindow()), WindowHeight(EventWindow()))
	
EndProcedure



UsePNGImageDecoder()
UseJPEGImageDecoder()

If OpenWindow(0, 0, 0, 245, 105, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_SizeGadget)
	ScrollAreaGadget(0,0,0,245,105,1000,1000,30,#PB_ScrollArea_BorderLess)
	If LoadImage(0, "ok.jpg"); changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
		ImageGadget(1, 10, 10, 100, 83, ImageID(0)); imagegadget standard
	EndIf
	CloseGadgetList() 
	
	BindGadgetEvent(0, @BindScrollDatas())
	BindEvent(#PB_Event_SizeWindow, @Resize())
	
	Repeat 
		Select WaitWindowEvent() 
			Case  #PB_Event_CloseWindow 
				End 
			Case  #PB_Event_Gadget 
				Select EventGadget()
					Case 0
						Debug "Un ascenseur a été utilisé ! (" +
						      GetGadgetAttribute(0, #PB_ScrollArea_X) +
						      "," +                      
						      GetGadgetAttribute(0, #PB_ScrollArea_Y) +
						      ")" 
						
				EndSelect
		EndSelect 
	ForEver 
EndIf



M.

Re: Ascenseur dans une fenêtre

Publié : mer. 19/juil./2023 9:33
par pat
Merci pour les explications... et le code !!!