Canvasgadget et mouse

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Canvasgadget et mouse

Message par blendman »

J'ai remarqué qu'avec le canvas :
- si on clique dans la surface du canvas et qu'on reste cliqué, il reste actif, même si on sort du canvas.
- si on ne clique pas dessus, qu'on y arrive ensuite (mouseEnter ou mousemove) il ne reste pas actif si on en sort.

Savez-vous s'il existe une technique pour reste actif comme lors d'un clic sur le canvas mais en partant d'un mousemove ?

Code : Tout sélectionner

Enumeration
  #IMAGE_Content  ; stores the previous CanvasGadget content while the mouse is down
  #IMAGE_Color
EndEnumeration

Enumeration
  #GADGET_CanvasFond
  #GADGET_Canvas
  #GADGET_Box
  #GADGET_Clear
  #GADGET_Area
EndEnumeration

#win = 0
#statusbar = 0

Global CurrentColor, StartX, StartY

Procedure DrawAction(x, y, EventType)
  
  If StartDrawing(CanvasOutput(#GADGET_Canvas))
    
    DrawImage(ImageID(#IMAGE_Content), 0, 0)
    Box(StartX, StartY, x-StartX, y-StartY, CurrentColor)
        
    StopDrawing()
  EndIf

EndProcedure


CurrentColor = RGB(120,120,120)
CreateImage(#IMAGE_Color, 35, 35, 24)
CreateImage(#IMAGE_Content, 380, 380, 24)

If OpenWindow(#win, 0, 0, 800, 600, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  
  If ScrollAreaGadget(#GADGET_Area, 70, 70, WindowWidth(#win) - 90, WindowHeight(#win) - 90, WindowWidth(#win), WindowHeight(#win))
    CanvasGadget(#GADGET_Canvas, 110, 110, 380, 380, #PB_Canvas_Keyboard)
    
    CloseGadgetList()
  EndIf

  ButtonGadget(#GADGET_Box,    10, 10, 50, 25, "Box",    #PB_Button_Toggle)
  ButtonGadget(#GADGET_Clear,  10, 40, 50, 25, "Clear")
  
  
  SetGadgetState(#GADGET_Box, 1)
  SetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Cursor, #PB_Cursor_Cross)
  SetActiveGadget(#GADGET_Canvas)
  
  CreateStatusBar(#statusbar,WindowID(#win))
  AddStatusBarField(200)
  AddStatusBarField(200)
  AddStatusBarField(200)
  
  Repeat
    Event = WaitWindowEvent()    
    EventGadget = EventGadget()

    If Event = #PB_Event_Gadget
    
      Select EventGadget()
      
        Case #GADGET_Canvas
          
          X = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseX)
          Y = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseY)
          
          If Start = 0
            If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
              Start =1              
              StartX = X
              StartY = Y
            EndIf
          EndIf
          
          If paint 
            DrawAction(X, Y, EventType())
          EndIf
          StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y))
          
          Type = EventType()
        
          Select EventType()
          
            Case #PB_EventType_LeftButtonDown
              paint = 1 
              If StartDrawing(ImageOutput(#IMAGE_Content))
                DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
                StopDrawing()
              EndIf
              
              StartX = X
              StartY = Y
              DrawAction(X, Y, EventType())

            
            Case #PB_EventType_LeftButtonUp
              DrawAction(X, Y, EventType())                        
              paint = 0
              Start = 0
              
            Case #PB_EventType_MouseMove
              If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
                If paint = 0
                  paint = 1
                  If StartDrawing(ImageOutput(#IMAGE_Content))
                    DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
                    StopDrawing()
                  EndIf
                EndIf
                DrawAction(X, Y, EventType())            
              EndIf
              
          EndSelect
      
        Case #GADGET_Clear
          If StartDrawing(CanvasOutput(#GADGET_Canvas))
            Box(0, 0, 380, 380, $FFFFFF)
            StopDrawing()
          EndIf
          SetActiveGadget(#GADGET_Canvas)
          
                
      EndSelect
    
    EndIf
    
  Until Event = #PB_Event_CloseWindow

EndIf
On voit sur ce code que si on clique sur le gadget et qu'on en sort, la position de la souris reste updatée. Mais pas si on commence à cliquer à l'extérieur du gadget.

Si vous avez une idée pour résoudre ça ^^.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Canvasgadget et mouse

Message par nico »

Mais pas si on commence à cliquer à l'extérieur du gadget
De mon coté si.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Canvasgadget et mouse

Message par blendman »

nico a écrit :
Mais pas si on commence à cliquer à l'extérieur du gadget
De mon coté si.
Même si tu ressors du canvas, ça continue à updater la position de la souris, comme lorsqu'on a cliqué ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Canvasgadget et mouse

Message par falsam »

Si je clique en dehors du Canvas et que je bouge ma souris pour venir sur le canvas les coordonnées de la souris sont mis à jour même si je sors du canvas par la suite.

Idem forcement quand je commence à cliquer sur le canvas.
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Canvasgadget et mouse

Message par blendman »

falsam a écrit :Si je clique en dehors du Canvas et que je bouge ma souris pour venir sur le canvas les coordonnées de la souris sont mis à jour même si je sors du canvas par la suite.
ah et bien, ça ne marche pas sous win8 ça :(

Chez toi ça marche même sous win8 ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Canvasgadget et mouse

Message par falsam »

blendman a écrit :Chez toi ça marche même sous win8 ?
Sous Windows 7 et Windows 8 le résultat est le même. les coordonnées de la souris sont bien mise à jour.

Par contre (Windows 7 et 8) et je viens de m'en rendre contre que maintenant. Si je reviens sur le canvas après avoir relâcher le clic gauche de la souris en dehors du canvas, le cube précédemment crée se met à jour en fonction des nouvelles coordonnées de la souris.
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Canvasgadget et mouse

Message par blendman »

falsam a écrit :Sous Windows 7 et Windows 8 le résultat est le même. les coordonnées de la souris sont bien mise à jour.
Tu es vraiment sûr ?
car j'ai testé avec win8 et win7 et chez moi, j'ai le même résultat sur 2 machines différentes :
- si je clique en dehors du canvas (pour commencer) et que je reviens dans le canvas : les coordonnées sont updatées. Mais dès que je ressors du canvas sans relâcher la souris ni rien, elles ne le sont plus. Et si je reviens dans le canvas (toujours en gardant la souris cliquée) elles sont à nouveau updatées.

En faisant ça, toi, ta souris est toujours updatées ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Canvasgadget et mouse

Message par Ar-S »

blendman a écrit : - si je clique en dehors du canvas (pour commencer) et que je reviens dans le canvas : les coordonnées sont updatées. Mais dès que je ressors du canvas sans relâcher la souris ni rien, elles ne le sont plus. Et si je reviens dans le canvas (toujours en gardant la souris cliquée) elles sont à nouveau updatées.
En faisant ça, toi, ta souris est toujours updatées ?
En faisant ça chez moi ça marche W8 x64
~~~~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
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Canvasgadget et mouse

Message par falsam »

blendman a écrit :si je clique en dehors du canvas (pour commencer)
C'est ce que je fais
blendman a écrit :et que je reviens dans le canvas : les coordonnées sont updatées.
Effectivement
blendman a écrit :Mais dès que je ressors du canvas sans relâcher la souris ni rien, elles ne le sont plus.
Oops oui tu as raison la mise à jour dans le StatusBar ne se fait plus.
blendman a écrit :Et si je reviens dans le canvas (toujours en gardant la souris cliquée) elles sont à nouveau updatées.
Oui
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Canvasgadget et mouse

Message par blendman »

falsam a écrit :
blendman a écrit :Mais dès que je ressors du canvas sans relâcher la souris ni rien, elles ne le sont plus.
Oops oui tu as raison la mise à jour dans le StatusBar ne se fait plus.i
ah , tu me rassures :)
C'est bien ce qu'il me semble ^^.

En fait, il suffit d'essayer de faire un carré complet englobant la totalité du canvas et on n'y arrive pas.
Il va falloir que je trouve une méthode qui le permette ^^.
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Canvasgadget et mouse

Message par Demivec »

Code : Tout sélectionner

  Define dx_a, dx_b, dx_c, dy_a, dy_b, dy_c
  dx_a =  WindowX(#win, #PB_Window_FrameCoordinate) + GadgetX(#GADGET_Area) + GadgetX(#GADGET_Canvas) ;positions, constant
  dx_b = WindowX(#win, #PB_Window_InnerCoordinate) - WindowX(#win, #PB_Window_FrameCoordinate) ;border size, used for gadget and window, constant
  dx_c = (dx_a + dx_b * 2 - 1)    ;combined x constants
  dy_a =  WindowY(#win, #PB_Window_FrameCoordinate) + GadgetY(#GADGET_Area) + GadgetY(#GADGET_Canvas) ;positions, constant
  dy_b = WindowY(#win, #PB_Window_InnerCoordinate) - WindowY(#win, #PB_Window_FrameCoordinate) ;menu border, constant
  dy_c = (dy_a + dy_b + dx_b - 1) ;combined y constants
  Repeat
    Event = WaitWindowEvent()    
    EventGadget = EventGadget()
    dx = DesktopMouseX() - dx_c + GetGadgetAttribute(#GADGET_Area, #PB_ScrollArea_X) ;mouse position relative to canvas
    dy = DesktopMouseY() - dy_c + GetGadgetAttribute(#GADGET_Area, #PB_ScrollArea_Y)
;...
;...
      StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y) + ", dx" + Str(dx) + ", dy" + Str(dy))
    Else
      StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y) + ", dx" + Str(dx) + ", dy" + Str(dy))
    EndIf 
        
  Until Event = #PB_Event_CloseWindow
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Canvasgadget et mouse

Message par blendman »

@demivec : désolé, ça ne marche pas ^^. ON n'arrive pas à dessiner un rectangle complet sur tout la surface du canvas, si on démarrer en dehors du canvas.

(Sorry, it doesn't work.
You can't draw a complete rectangle if you start outside the canvas)

Code : Tout sélectionner


Enumeration
  #IMAGE_Content  ; stores the previous CanvasGadget content while the mouse is down
  #IMAGE_Color
EndEnumeration

Enumeration
  #GADGET_CanvasFond
  #GADGET_Canvas
  #GADGET_Box
  #GADGET_Clear
  #GADGET_Area
EndEnumeration

#win = 0
#statusbar = 0

Global CurrentColor, StartX, StartY

Procedure DrawAction(x, y, EventType)
 
  If StartDrawing(CanvasOutput(#GADGET_Canvas))
   
    DrawImage(ImageID(#IMAGE_Content), 0, 0)
    Box(StartX, StartY, x-StartX, y-StartY, CurrentColor)
       
    StopDrawing()
  EndIf

EndProcedure


CurrentColor = RGB(120,120,120)
CreateImage(#IMAGE_Color, 35, 35, 24)
CreateImage(#IMAGE_Content, 380, 380, 24)

If OpenWindow(#win, 0, 0, 800, 600, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 
 
  If ScrollAreaGadget(#GADGET_Area, 70, 70, WindowWidth(#win) - 90, WindowHeight(#win) - 90, WindowWidth(#win), WindowHeight(#win))
    CanvasGadget(#GADGET_Canvas, 110, 110, 380, 380, #PB_Canvas_Keyboard)
   
    CloseGadgetList()
  EndIf

  ButtonGadget(#GADGET_Box,    10, 10, 50, 25, "Box",    #PB_Button_Toggle)
  ButtonGadget(#GADGET_Clear,  10, 40, 50, 25, "Clear")
 
 
  SetGadgetState(#GADGET_Box, 1)
  SetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Cursor, #PB_Cursor_Cross)
  SetActiveGadget(#GADGET_Canvas)
 
  CreateStatusBar(#statusbar,WindowID(#win))
  AddStatusBarField(200)
  AddStatusBarField(200)
  AddStatusBarField(200)
  
  
  Define dx_a, dx_b, dx_c, dy_a, dy_b, dy_c
  dx_a =  WindowX(#win, #PB_Window_FrameCoordinate) + GadgetX(#GADGET_Area) + GadgetX(#GADGET_Canvas) ;positions, constant
  dx_b = WindowX(#win, #PB_Window_InnerCoordinate) - WindowX(#win, #PB_Window_FrameCoordinate) ;border size, used for gadget and window, constant
  dx_c = (dx_a + dx_b * 2 - 1)    ;combined x constants
  dy_a =  WindowY(#win, #PB_Window_FrameCoordinate) + GadgetY(#GADGET_Area) + GadgetY(#GADGET_Canvas) ;positions, constant
  dy_b = WindowY(#win, #PB_Window_InnerCoordinate) - WindowY(#win, #PB_Window_FrameCoordinate) ;menu border, constant
  dy_c = (dy_a + dy_b + dx_b - 1) ;combined y constants

  
  Repeat
    
    Event = WaitWindowEvent()   
    EventGadget = EventGadget()
    dx = DesktopMouseX() - dx_c + GetGadgetAttribute(#GADGET_Area, #PB_ScrollArea_X) ;mouse position relative to canvas
    dy = DesktopMouseY() - dy_c + GetGadgetAttribute(#GADGET_Area, #PB_ScrollArea_Y)


    If Event = #PB_Event_Gadget
   
      Select EventGadget()
     
        Case #GADGET_Canvas
         
          X = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseX)
          Y = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseY)
         
          If Start = 0
            If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
              Start =1             
              StartX = X
              StartY = Y
            EndIf
          EndIf
         
          If paint
            DrawAction(X, Y, EventType())
          EndIf
          ;StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y))
          

      StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y) + ", dx" + Str(dx) + ", dy" + Str(dy))


          
          
          Type = EventType()
       
          Select EventType()
         
            Case #PB_EventType_LeftButtonDown
              paint = 1
              If StartDrawing(ImageOutput(#IMAGE_Content))
                DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
                StopDrawing()
              EndIf
             
              StartX = X
              StartY = Y
              DrawAction(X, Y, EventType())

           
            Case #PB_EventType_LeftButtonUp
              DrawAction(X, Y, EventType())                       
              paint = 0
              Start = 0
             
            Case #PB_EventType_MouseMove
              If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
                If paint = 0
                  paint = 1
                  If StartDrawing(ImageOutput(#IMAGE_Content))
                    DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
                    StopDrawing()
                  EndIf
                EndIf
                DrawAction(X, Y, EventType())           
              EndIf
             
          EndSelect
     
        Case #GADGET_Clear
          If StartDrawing(CanvasOutput(#GADGET_Canvas))
            Box(0, 0, 380, 380, $FFFFFF)
            StopDrawing()
          EndIf
          SetActiveGadget(#GADGET_Canvas)
         
               
      EndSelect
   
    EndIf
   
  Until Event = #PB_Event_CloseWindow

EndIf
 
  
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Canvasgadget et mouse

Message par Mesa »

Ça bug un peu mais c'est peut-être ce que tu recherches (?)

Code : Tout sélectionner

Enumeration
	#IMAGE_Content  ; stores the previous CanvasGadget content while the mouse is down
	#IMAGE_Color
EndEnumeration

Enumeration
	#GADGET_CanvasFond
	#GADGET_Canvas
	#GADGET_Box
	#GADGET_Clear
	#GADGET_Area
EndEnumeration

#win = 0
#statusbar = 0

Global CurrentColor, StartX, StartY

Procedure DrawAction(x, y, EventType)

	If StartDrawing(CanvasOutput(#GADGET_Canvas))
		
		DrawImage(ImageID(#IMAGE_Content), 0, 0)
		Box(StartX, StartY, x-StartX, y-StartY, CurrentColor)
				
		StopDrawing()
	EndIf

EndProcedure


CurrentColor = RGB(120,120,120)
CreateImage(#IMAGE_Color, 35, 35, 24)
CreateImage(#IMAGE_Content, 380, 380, 24)

If OpenWindow(#win, 0, 0, 800, 600, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)


	If ScrollAreaGadget(#GADGET_Area, 70, 70, WindowWidth(#win) - 90, WindowHeight(#win) - 90, WindowWidth(#win), WindowHeight(#win))
		CanvasGadget(#GADGET_Canvas, 110, 110, 380, 380, #PB_Canvas_Keyboard)
		
		CloseGadgetList()
	EndIf

	ButtonGadget(#GADGET_Box,    10, 10, 50, 25, "Box",    #PB_Button_Toggle)
	ButtonGadget(#GADGET_Clear,  10, 40, 50, 25, "Clear")


	SetGadgetState(#GADGET_Box, 1)
	SetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Cursor, #PB_Cursor_Cross)
	SetActiveGadget(#GADGET_Canvas)

	CreateStatusBar(#statusbar,WindowID(#win))
	AddStatusBarField(200)
	AddStatusBarField(200)
	AddStatusBarField(200)
	
	
	Define dx_a, dx_b, dx_c, dy_a, dy_b, dy_c
	dx_a =  WindowX(#win, #PB_Window_FrameCoordinate) + GadgetX(#GADGET_Area) + GadgetX(#GADGET_Canvas) ;positions, constant
	dx_b = WindowX(#win, #PB_Window_InnerCoordinate) - WindowX(#win, #PB_Window_FrameCoordinate) ;border size, used for gadget and window, constant
	dx_c = (dx_a + dx_b * 2 - 1)    ;combined x constants
	dy_a =  WindowY(#win, #PB_Window_FrameCoordinate) + GadgetY(#GADGET_Area) + GadgetY(#GADGET_Canvas) ;positions, constant
	dy_b = WindowY(#win, #PB_Window_InnerCoordinate) - WindowY(#win, #PB_Window_FrameCoordinate) ;menu border, constant
	dy_c = (dy_a + dy_b + dx_b - 1) ;combined y constants

	
	Repeat
		
		Event = WaitWindowEvent()   
		EventGadget = EventGadget()
		dx = DesktopMouseX() - dx_c + GetGadgetAttribute(#GADGET_Area, #PB_ScrollArea_X) ;mouse position relative to canvas
		dy = DesktopMouseY() - dy_c + GetGadgetAttribute(#GADGET_Area, #PB_ScrollArea_Y)


		If Event = #PB_Event_Gadget
		
			Select EventGadget()
			
				Case #GADGET_Canvas
					
					X = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseX)
					Y = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseY)
					
					If Start = 0
						If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
							Start =1             
							StartX = X
							StartY = Y
						EndIf
					EndIf
					
					If paint
						DrawAction(dx, dy, EventType())
					EndIf
					;StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y))
					

			StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y) + ", dx" + Str(dx) + ", dy" + Str(dy))


					
					
					Type = EventType()
				
					Select EventType()
					
						Case #PB_EventType_LeftButtonDown
							paint = 1
							If StartDrawing(ImageOutput(#IMAGE_Content))
								DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
								StopDrawing()
							EndIf
							
							StartX = X
							StartY = Y
							DrawAction(dx, dy, EventType())

						
						Case #PB_EventType_LeftButtonUp
							DrawAction(dx, dy, EventType())                       
							paint = 0
							Start = 0
							
						Case #PB_EventType_MouseMove
							If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton
								If paint = 0
									paint = 1
									If StartDrawing(ImageOutput(#IMAGE_Content))
										DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
										StopDrawing()
									EndIf
								EndIf
								DrawAction(dx, dy, EventType())           
							EndIf
							
					EndSelect
			
				Case #GADGET_Clear
					If StartDrawing(CanvasOutput(#GADGET_Canvas))
						Box(0, 0, 380, 380, $FFFFFF)
						StopDrawing()
					EndIf
					SetActiveGadget(#GADGET_Canvas)
					
								
			EndSelect
		
		EndIf
		
	Until Event = #PB_Event_CloseWindow

EndIf

	
Mesa.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Canvasgadget et mouse

Message par blendman »

Hélas, non, ça ne marche toujours pas ^^
Essaie de faire un rectangle complet sur tout la surface du canvas, en partant de l'extérieur du canvas, en y entrant et en en sortant pour le terminer ;)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Canvasgadget et mouse

Message par Backup »

c'est un peu normal

le gadget accepte les events, qui le concerne !
tant que tu dessine dans le Canvas, ça marche

si tu cherche a sortir du canvas en etant bouton gauche cliqué , le canva, ne récupère plus les events
puisque tu te trouves en dehors de lui ...

chaque gadget ne peut récupérer que les events qui le concerne !

lorsque tu sort du canvas , tu te trouve sur le gadget #GADGET_Area ... plus sur le Canvas ...
et le Area , n'est pas étudié pour recevoir les events de la souris sur sa surface , mais seulement sur ses ascenseurs ...

a mon avis ça marcherai peut être avec juste le Canvas , (sans AreaGadget )
et un callback concernant la fenetre juste en dessous de lui
dans ce cas, si tu sort du Canvas, tu te retrouverai sur la fenetre, et a se moment la , le callback permettrai de récupérer le positionnement et le mouvement de la souris ... :)
Répondre