Ascenseur dans une fenêtre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Ascenseur dans une fenêtre

Message 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.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Ascenseur dans une fenêtre

Message 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.
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Ascenseur dans une fenêtre

Message par pat »

Merci pour les explications... et le code !!!
Répondre