Relier graphiquement deux Gadgets [Resolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Relier graphiquement deux Gadgets

Message par Kwai chang caine »

Merci beaucoup, d'avoir pris de ton temps pour m'aider
Je m'en occupe tout de suite 8)
Par contre n'aurait tu pas mis les deux meme "Haut gauche" en debut ??? :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Relier graphiquement deux Gadgets

Message par kernadec »

pardon, voila j'ai remis le code
je suis distrait...

cordialement
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Relier graphiquement deux Gadgets

Message par Kwai chang caine »

Encore merci... 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Relier graphiquement deux Gadgets

Message par Kwai chang caine »

Ouuaaahhh !!!! j'suis super content....ça avance 8)

Aujourd'hui, c'est jour de loto...j'suis arrivé a reunir tes 4 codes.
Mais c'est pas ça ce qui est impressionant...c'est que ça marche 8O

Bon me reste un petit probleme de Flickering au resizage de la fleche :cry:
Et la j'ai essayé pleins de trucs.... de reremplir le fillarea un peu partout...et plein d'autres choses..
Mais ça flick, ca flick, ça flick toujours :(

J'suis pas comme FREAK....j'trouve pas que le FLICK, c'est chic!!!! :?

Code : Tout sélectionner

Enumeration
 #Fenetre
 #Image_0
 #Image_1
 #ImageGadget
EndEnumeration

Global Hauteur.l,Largeur .l
Hauteur = 300
Largeur = 400
Global DepartX
Global DepartY
Global Passage

CreateImage(#Image_0, Largeur, Hauteur) 
CreateImage(#Image_1, Largeur, Hauteur)

Procedure DessineFleche(x, y)

 static MemX, MemY
 
 If MemX = x And MemY = Y
  ProcedureReturn
 Else
  MemX = X
  MemY = y 
 EndIf
 
 If Not Passage And x <> 0 And y <> 0
  Passage = #True
  DepartX = X
  DepartY = Y
 EndIf 

 StartDrawing(ImageOutput(#Image_1))
  DrawImage(ImageID(#Image_0), 0, 0)
   
 If x => DepartX And y <= DepartY ; Haut droit
    
  x1 = Abs(Largeur + x - (Largeur * 2))
  y1 = Hauteur - y
  
  If x1 <= 1 : x1 = 1 : EndIf
  If y1 <= 1 : y1 = 1 : EndIf
 
   LineXY(0, GadgetHeight(#ImageGadget)- 10, GadgetWidth(#ImageGadget) - 10,GadgetHeight(#ImageGadget)- 10, RGB(226, 23, 29)) ; Horizontale
   LineXY(GadgetWidth(#ImageGadget) - 10, 10, GadgetWidth(#ImageGadget) - 10, GadgetHeight(#ImageGadget)- 10, RGB(226, 23, 29)) ; Verticale
   LineXY(GadgetWidth(#ImageGadget) - 10, 10, GadgetWidth(#ImageGadget) - 15,  20, RGB(226, 23, 29))
   LineXY(GadgetWidth(#ImageGadget) - 10, 10, GadgetWidth(#ImageGadget) - 5, 20, RGB(226, 23, 29))
  StopDrawing()
  
  ImageGadget(#ImageGadget, Largeur, Hauteur - y1, x1, Hauteur + y, ImageID(#Image_1))
    
 ElseIf x => DepartX And y => DepartY ; Bas droit
    
  x1 = Abs(Largeur + x - (Largeur * 2))
  y1 = y - Hauteur
  
  If x1 <= 1 : x1 = 1 : EndIf
  If y1 <= 1 : y1 = 1 : EndIf
  
   LineXY(0, 10, GadgetWidth(#ImageGadget) - 10, 10, RGB(226, 23, 29)) ; Horizontale
   LineXY(GadgetWidth(#ImageGadget) - 10, 10, GadgetWidth(#ImageGadget) - 10, GadgetHeight(#ImageGadget) - 10, RGB(226, 23, 29)) ; Verticale
   LineXY(GadgetWidth(#ImageGadget) - 10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget) - 15, GadgetHeight(#ImageGadget) - 20, RGB(226, 23, 29))
   LineXY(GadgetWidth(#ImageGadget) - 10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget) - 5,GadgetHeight(#ImageGadget) - 20, RGB(226, 23, 29))
  StopDrawing()
  
  ImageGadget(#ImageGadget, Largeur, Hauteur, x1, Hauteur + y1, ImageID(#Image_1))
    
 ElseIf x <= DepartX And y => DepartY ; Bas gauche
   
  x1 = Abs(1 - x + largeur)
  y1 = Abs(Hauteur - y)
  
  If x1 <= 1 : x1 = 1 : EndIf
  If y1 <= 1 : y1 = 1 : EndIf
  
   LineXY(10, 10, GadgetWidth(#ImageGadget), 10, RGB(226, 23, 29)) ; Horizontale
   LineXY(GadgetWidth(#ImageGadget) - x1 + 10, 10, GadgetWidth(#ImageGadget)-x1 + 10, GadgetHeight(#ImageGadget)- 10, RGB(226, 23, 29)) ; Verticale
   LineXY(GadgetWidth(#ImageGadget) - x1 + 10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget) -x1 + 15, GadgetHeight(#ImageGadget) - 20, RGB(226, 23, 29))
   LineXY(GadgetWidth(#ImageGadget) -x1 + 10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget) -x1 + 5,GadgetHeight(#ImageGadget) - 20, RGB(226, 23, 29))
  StopDrawing()
  
  ImageGadget(#ImageGadget,x ,Hauteur, x1, Hauteur + y, ImageID(#Image_1))
   
 ElseIf x <= DepartX And y <= DepartY  ; Haut gauche
    
  x1 = Abs(1 - x + Largeur)
  y1 = Abs(1 - y + Hauteur)
  
  If x1 <= 1 : x1 = 1 : EndIf
  If y1 <= 1 : y1 = 1 : EndIf

   LineXY(10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget),GadgetHeight(#ImageGadget) - 10, RGB(226, 23, 29)) ; Horizontale
   LineXY(GadgetWidth(#ImageGadget)- x1 + 10, 10, GadgetWidth(#ImageGadget) - x1 + 10, GadgetHeight(#ImageGadget) - 10, RGB(226, 23, 29)) ; Verticale
   LineXY(GadgetWidth(#ImageGadget)- x1 + 10, 10, GadgetWidth(#ImageGadget) - x1 + 15, 20, RGB(226, 23, 29))
   LineXY(GadgetWidth(#ImageGadget)- x1 + 10, 10, GadgetWidth(#ImageGadget) - x1 + 5, 20, RGB(226, 23, 29))
  StopDrawing()
  
  ImageGadget(#ImageGadget,x, y, x1, y1,ImageID(#Image_1))
    
 EndIf
 
 ResizeImage(#Image_1,x1, y1)
 SetGadgetState(#ImageGadget,ImageID(#Image_1))

EndProcedure

OpenWindow(#Fenetre, 0, 0, 800, 600, "Fleche multidirectionnelle",  #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar)
ImageGadget(#ImageGadget,0, 0, 0, 0, ImageID(#Image_1))

StartDrawing(ImageOutput(#Image_0))
 FillArea(0,0,RGB(255,255,255),RGB(255,255,255))
StopDrawing()

DessineFleche(Largeur - 30, Hauteur - 30)
         
Repeat  

 Evenement = WaitWindowEvent()
 MouseX = WindowMouseX(#Fenetre)
 MouseY = WindowMouseY(#Fenetre)
     
 Select Evenement
    
  Case #WM_MOUSEMOVE
  
   If GetAsyncKeyState_(#VK_LBUTTON)
    DessineFleche(MouseX , MouseY)
   EndIf         

 EndSelect
   
Until Evenement = #PB_Event_CloseWindow
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Relier graphiquement deux Gadgets

Message par kernadec »

juste une autre version pour le fun
avec les 4 en meme temps

j'ai rencontré un ptit soucis dans le code haut droit
"que tu as utilisé dans ton code est la ligne 52"

Code : Tout sélectionner

ImageGadget(#ImageGadget, Largeur, Hauteur - y1, x1, Hauteur + y, ImageID(#Image_1))
ImageGadget(#ImageGadget, Largeur, Hauteur - y1, x1, Hauteur - y, ImageID(#Image_1))
-------------------------------------------------------------ici    
il dessinait une surface en gris dans le bloc inférieur donc invisible sans objet dans ce coin

je me suis aperçu de ce problème en utilisant les 4 flèches,
j'ai corrigé le code précèdent haut droit.

Cordialement

Code : Tout sélectionner

Enumeration
#Fenetre
#Imagehg_0
#Imagehg_1
#Imagehd_0
#Imagehd_1
#Imagebg_0
#Imagebg_1
#Imagebd_0
#Imagebd_1
#ImageGadgethg
#ImageGadgethd
#ImageGadgetbg
#ImageGadgetbd
EndEnumeration
Global Hauteur.l,Largeur .l
Hauteur = 300
Largeur = 400
CreateImage(#Imagehg_0, Largeur,Hauteur) 
CreateImage(#Imagehg_1, Largeur,Hauteur)
CreateImage(#Imagehd_0, Largeur,Hauteur) 
CreateImage(#Imagehd_1, Largeur,Hauteur)
CreateImage(#Imagebg_0, Largeur,Hauteur) 
CreateImage(#Imagebg_1, Largeur,Hauteur)
CreateImage(#Imagebd_0, Largeur,Hauteur) 
CreateImage(#Imagebd_1, Largeur,Hauteur)
Procedure DessineFleche_hg(x, y) 
x1=Abs(1-x+largeur-1)
y1=Abs(1-y+Hauteur-1)
;If (X1>0 And X1<400) Or (Y1>0 And Y1<300)
StartDrawing(ImageOutput(#Imagehg_1))
	DrawImage(ImageID(#Imagehg_0), 0, 0)
	LineXY(10, GadgetHeight(#ImageGadgethg)- 10, GadgetWidth(#ImageGadgethg),GadgetHeight(#ImageGadgethg)- 10, RGB(226, 23, 29)) ; Horizontale
	LineXY(GadgetWidth(#ImageGadgethg)-x1 + 10, 10, GadgetWidth(#ImageGadgethg)-x1 + 10, GadgetHeight(#ImageGadgethg)- 10, RGB(226, 23, 29)) ; Verticale
	LineXY(GadgetWidth(#ImageGadgethg)-x1 +10, 10, GadgetWidth(#ImageGadgethg)-x1 +15,  20, RGB(226, 23, 29))
	LineXY(GadgetWidth(#ImageGadgethg)-x1 +10,  10, GadgetWidth(#ImageGadgethg)-x1 + 5, 20, RGB(226, 23, 29))
StopDrawing()
  ResizeImage(#Imagehg_1, x1, y1)
  ResizeImage(#Imagehg_0, x1, y1)
  ImageGadget(#ImageGadgethg,x,y,x1, y1,ImageID(#Imagehg_1))
  SetGadgetState(#ImageGadgethg,ImageID(#Imagehg_1))
EndProcedure
Procedure DessineFleche_hd(x, y)
x1=Abs(Largeur+x-(Largeur*2))
y1=Hauteur-y
StartDrawing(ImageOutput(#Imagehd_1))
	DrawImage(ImageID(#Imagehd_0), 0, 0)
	LineXY(0, GadgetHeight(#ImageGadgethd)- 10, GadgetWidth(#ImageGadgethd) - 10,GadgetHeight(#ImageGadgethd)- 10, RGB(226, 23, 29)) ; Horizontale
	LineXY(GadgetWidth(#ImageGadgethd) - 10, 10, GadgetWidth(#ImageGadgethd) - 10, GadgetHeight(#ImageGadgethd)- 10, RGB(226, 23, 29)) ; Verticale
	LineXY(GadgetWidth(#ImageGadgethd) - 10, 10, GadgetWidth(#ImageGadgethd) - 15,  20, RGB(226, 23, 29))
	LineXY(GadgetWidth(#ImageGadgethd) - 10,  10, GadgetWidth(#ImageGadgethd) - 5, 20, RGB(226, 23, 29))
StopDrawing()
  ResizeImage(#Imagehd_1,x1, y1)
  ResizeImage(#Imagehd_0, x1, y1)
  ImageGadget(#ImageGadgethd, Largeur, Hauteur-y1,x1, Hauteur-y, ImageID(#Imagehd_1))
  SetGadgetState(#ImageGadgethd,ImageID(#Imagehd_1))
EndProcedure
Procedure DessineFleche_bg(x, y)
	x1=Abs(Largeur+x-(Largeur*2))
	y1=y-Hauteur
StartDrawing(ImageOutput(#Imagebg_1))
	DrawImage(ImageID(#Imagebg_0), 0, 0)
	LineXY(0, 10, GadgetWidth(#ImageGadgetbg) - 10, 10, RGB(226, 23, 29)) ; Horizontale
	LineXY(GadgetWidth(#ImageGadgetbg) - 10, 10, GadgetWidth(#ImageGadgetbg) - 10, GadgetHeight(#ImageGadgetbg)- 10, RGB(226, 23, 29)) ; Verticale
	LineXY(GadgetWidth(#ImageGadgetbg) - 10, GadgetHeight(#ImageGadgetbg) - 10, GadgetWidth(#ImageGadgetbg) - 15, GadgetHeight(#ImageGadgetbg) - 20, RGB(226, 23, 29))
	LineXY(GadgetWidth(#ImageGadgetbg) - 10, GadgetHeight(#ImageGadgetbg) - 10, GadgetWidth(#ImageGadgetbg) - 5,GadgetHeight(#ImageGadgetbg) - 20, RGB(226, 23, 29))
StopDrawing()
  ResizeImage(#Imagebg_1,x1, y1)
  ResizeImage(#Imagebg_0, x1, y1)
  ImageGadget(#ImageGadgetbg, Largeur,Hauteur,x1, Hauteur+y1, ImageID(#Imagebg_1))
  SetGadgetState(#ImageGadgetbg,ImageID(#Imagebg_1))
EndProcedure
Procedure DessineFleche_bd(x, y)
x1=Abs(1-x+largeur)
y1=Abs(Hauteur-y)
StartDrawing(ImageOutput(#Imagebd_1))
	DrawImage(ImageID(#Imagebd_0), 0, 0)
	LineXY(10, 10, GadgetWidth(#ImageGadgetbd), 10, RGB(226, 23, 29)) ; Horizontale
	LineXY(GadgetWidth(#ImageGadgetbd)-x1 + 10, 10, GadgetWidth(#ImageGadgetbd)-x1 + 10, GadgetHeight(#ImageGadgetbd)- 10, RGB(226, 23, 29)) ; Verticale
	LineXY(GadgetWidth(#ImageGadgetbd)-x1 + 10, GadgetHeight(#ImageGadgetbd) - 10, GadgetWidth(#ImageGadgetbd) -x1+ 15, GadgetHeight(#ImageGadgetbd) - 20, RGB(226, 23, 29))
	LineXY(GadgetWidth(#ImageGadgetbd) -x1+ 10, GadgetHeight(#ImageGadgetbd) - 10, GadgetWidth(#ImageGadgetbd) -x1+ 5,GadgetHeight(#ImageGadgetbd) - 20, RGB(226, 23, 29))
StopDrawing()
  ResizeImage(#Imagebd_1,x1, y1)
  ResizeImage(#Imagebd_0, x1, y1)
  ImageGadget(#ImageGadgetbd,x ,Hauteur,x1,Hauteur+y, ImageID(#Imagebd_1))
  SetGadgetState(#ImageGadgetbd,ImageID(#Imagebd_1))
EndProcedure


OpenWindow(#Fenetre, 0, 0, 800, 600, "New window ( 0 )",  #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar)
ImageGadget(#ImageGadgethg,0,0,0,0,ImageID(#Imagehg_1))   ;initialise ImageGadge
StartDrawing(ImageOutput(#Imagehg_0))
FillArea(0,0,RGB(255,255,255),RGB(255,255,255))
StopDrawing()
ImageGadget(#ImageGadgethd,0,0,0,0,ImageID(#Imagehd_1))   ;initialise ImageGadge
StartDrawing(ImageOutput(#Imagehd_0))
FillArea(0,0,RGB(255,255,255),RGB(255,255,255))
StopDrawing()
ImageGadget(#ImageGadgetbg,0,0,0,0,ImageID(#Imagebg_1))   ;initialise ImageGadge
StartDrawing(ImageOutput(#Imagebg_0))
FillArea(0,0,RGB(255,255,255),RGB(255,255,255))
StopDrawing()
ImageGadget(#ImageGadgetbd,0,0,0,0,ImageID(#Imagebd_1))   ;initialise ImageGadge
StartDrawing(ImageOutput(#Imagebd_0))
FillArea(0,0,RGB(255,255,255),RGB(255,255,255))
StopDrawing()


DessineFleche_hg(Largeur-30,Hauteur-30)
DessineFleche_hd(Largeur-30,Hauteur-30)
DessineFleche_bg(Largeur+30,Hauteur+30)
DessineFleche_bd(Largeur-30,Hauteur-30)

Repeat  

Evenement = WaitWindowEvent()
 MouseX = WindowMouseX(#Fenetre)
 MouseY = WindowMouseY(#Fenetre)
 If mousex<400 And mousey<300
	 Select Evenement
		Case #WM_MOUSEMOVE
      If GetAsyncKeyState_(#VK_LBUTTON) 
        DessineFleche_hg(MouseX , MouseY)
      EndIf 
  EndSelect
 EndIf
 If mousex>400 And mousey<300
	Select Evenement
		Case #WM_MOUSEMOVE
			If GetAsyncKeyState_(#VK_LBUTTON) ;And MouseX > GadgetX(#ImageGadget) And MouseY > GadgetY(#ImageGadget)
        DessineFleche_hd(MouseX , MouseY)
      EndIf         
  EndSelect
  EndIf  
  If mousex>400 And mousey>300
   Select Evenement
 		Case #WM_MOUSEMOVE
     If GetAsyncKeyState_(#VK_LBUTTON)
       DessineFleche_bg(MouseX , MouseY )
     EndIf         
		EndSelect
  EndIf
  If mousex<400 And mousey>300
   Select Evenement
    Case #WM_MOUSEMOVE
     If GetAsyncKeyState_(#VK_LBUTTON)
       DessineFleche_bd(MouseX , MouseY)
     EndIf         
   EndSelect
  EndIf  
Until Evenement = #PB_Event_CloseWindow
Dernière modification par kernadec le mar. 19/janv./2010 15:37, modifié 1 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Relier graphiquement deux Gadgets

Message par Kwai chang caine »

Ah bah tu va pas y croire :lol:
J'allais poster que je crois que j'ai trouvé, c'etait la recreation des GadgetImage, les resizegadget sont plus rapide apparement.

Je crois que je peux presque crier !!!!! A BAS LES FLICKS !!! :lol: :lol: :lol:
Je vais essayer ton code 8)

Code : Tout sélectionner

Enumeration
 #Fenetre
 #Image_0
 #Image_1
 #ImageGadget
EndEnumeration

Global Hauteur.l,Largeur .l
Hauteur = 300
Largeur = 400
Global DepartX
Global DepartY
Global Passage

CreateImage(#Image_0, Largeur, Hauteur) 
CreateImage(#Image_1, Largeur, Hauteur)

Procedure DessineFleche(x, y)
 
 Static MemX, MemY
 
 If MemX = x And MemY = Y
  ProcedureReturn
 Else
  MemX = X
  MemY = y 
 EndIf
 
 If Not Passage And x <> 0 And y <> 0
  Passage = #True
  DepartX = X
  DepartY = Y
 EndIf 

 StartDrawing(ImageOutput(#Image_1))
  DrawImage(ImageID(#Image_0), 0, 0)
   
 If x => DepartX And y <= DepartY ; Haut droit
   
  x1 = Abs(Largeur + x - (Largeur * 2))
  y1 = Hauteur - y
  
  If x1 <= 1 : x1 = 1 : EndIf
  If y1 <= 1 : y1 = 1 : EndIf
 
  LineXY(0, GadgetHeight(#ImageGadget)- 10, GadgetWidth(#ImageGadget) - 10,GadgetHeight(#ImageGadget) - 10, RGB(226, 23, 29)) ; Horizontale
  LineXY(GadgetWidth(#ImageGadget) - 10, 10, GadgetWidth(#ImageGadget) - 10, GadgetHeight(#ImageGadget) - 10, RGB(226, 23, 29)) ; Verticale
  LineXY(GadgetWidth(#ImageGadget) - 10, 10, GadgetWidth(#ImageGadget) - 15, 20, RGB(226, 23, 29))
  LineXY(GadgetWidth(#ImageGadget) - 10, 10, GadgetWidth(#ImageGadget) - 5, 20, RGB(226, 23, 29))
  StopDrawing()

  ResizeGadget(#ImageGadget,  Largeur, Hauteur - y1, x1, Hauteur + y)
    
 ElseIf x => DepartX And y => DepartY ; Bas droit
  
  x1 = Abs(Largeur + x - (Largeur * 2))
  y1 = y - Hauteur
  
  If x1 <= 1 : x1 = 1 : EndIf
  If y1 <= 1 : y1 = 1 : EndIf
  
  LineXY(0, 10, GadgetWidth(#ImageGadget) - 10, 10, RGB(226, 23, 29)) ; Horizontale
  LineXY(GadgetWidth(#ImageGadget) - 10, 10, GadgetWidth(#ImageGadget) - 10, GadgetHeight(#ImageGadget) - 10, RGB(226, 23, 29)) ; Verticale
  LineXY(GadgetWidth(#ImageGadget) - 10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget) - 15, GadgetHeight(#ImageGadget) - 20, RGB(226, 23, 29))
  LineXY(GadgetWidth(#ImageGadget) - 10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget) - 5, GadgetHeight(#ImageGadget) - 20, RGB(226, 23, 29))
  StopDrawing()
  
  ResizeGadget(#ImageGadget, Largeur, Hauteur, x1, Hauteur + y1)
  
 ElseIf x <= DepartX And y => DepartY ; Bas gauche
  
  x1 = Abs(1 - x + largeur)
  y1 = Abs(Hauteur - y)
  
  If x1 <= 1 : x1 = 1 : EndIf
  If y1 <= 1 : y1 = 1 : EndIf
  
  LineXY(10, 10, GadgetWidth(#ImageGadget), 10, RGB(226, 23, 29)) ; Horizontale
  LineXY(GadgetWidth(#ImageGadget) - x1 + 10, 10, GadgetWidth(#ImageGadget)-x1 + 10, GadgetHeight(#ImageGadget)- 10, RGB(226, 23, 29)) ; Verticale
  LineXY(GadgetWidth(#ImageGadget) - x1 + 10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget) - x1 + 15, GadgetHeight(#ImageGadget) - 20, RGB(226, 23, 29))
  LineXY(GadgetWidth(#ImageGadget) - x1 + 10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget) - x1 + 5, GadgetHeight(#ImageGadget) - 20, RGB(226, 23, 29))
  StopDrawing()
  
  ResizeGadget(#ImageGadget, x ,Hauteur, x1, Hauteur + y)
   
 ElseIf x <= DepartX And y <= DepartY  ; Haut gauche
  
  x1 = Abs(1 - x + Largeur)
  y1 = Abs(1 - y + Hauteur)
  
  If x1 <= 1 : x1 = 1 : EndIf
  If y1 <= 1 : y1 = 1 : EndIf

  LineXY(10, GadgetHeight(#ImageGadget) - 10, GadgetWidth(#ImageGadget),GadgetHeight(#ImageGadget) - 10, RGB(226, 23, 29)) ; Horizontale
  LineXY(GadgetWidth(#ImageGadget) - x1 + 10, 10, GadgetWidth(#ImageGadget) - x1 + 10, GadgetHeight(#ImageGadget) - 10, RGB(226, 23, 29)) ; Verticale
  LineXY(GadgetWidth(#ImageGadget) - x1 + 10, 10, GadgetWidth(#ImageGadget) - x1 + 15, 20, RGB(226, 23, 29))
  LineXY(GadgetWidth(#ImageGadget) - x1 + 10, 10, GadgetWidth(#ImageGadget) - x1 + 5, 20, RGB(226, 23, 29))
  StopDrawing()

  ResizeGadget(#ImageGadget, x, y, x1, y1)
  
 EndIf
 
 ResizeImage(#Image_1, x1, y1)
 SetGadgetState(#ImageGadget,ImageID(#Image_1))

EndProcedure

OpenWindow(#Fenetre, 0, 0, 800, 600, "Fleche multidirectionnelle",  #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar)
ImageGadget(#ImageGadget,0, 0, 0, 0, ImageID(#Image_1))

StartDrawing(ImageOutput(#Image_0))
 Box(0, 0, Largeur, Largeur, RGB(255, 255, 255))
StopDrawing()

DessineFleche(Largeur - 30, Hauteur - 30)
         
Repeat  

 Evenement = WaitWindowEvent()
 MouseX = WindowMouseX(#Fenetre)
 MouseY = WindowMouseY(#Fenetre)
     
 Select Evenement
    
  Case #WM_MOUSEMOVE
  
   If GetAsyncKeyState_(#VK_LBUTTON)
    DessineFleche(MouseX , MouseY)
   EndIf         

 EndSelect
   
Until Evenement = #PB_Event_CloseWindow
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Relier graphiquement deux Gadgets

Message par kernadec »

excellent ton second code plus de flick, flip, flap, flop..
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Relier graphiquement deux Gadgets

Message par Kwai chang caine »

excellent ton second code plus de flick, flip, flap, flop..
:lol: :lol: :lol:
Bah c'est toi qui avait fais le plus gros...et pourtant d'habitude "le plus gros" c'est toujours moi :lol:

Il faudrait livrer un balais avec ton dernier code, parce que y'a noir de bout de gadget qui reste :lol: :lol:
En tout cas je te remercie beaucoup de cette precieuse aide, je ne crois pas que j'y serais arriver sans ton aide 8)

Je remercie aussi mon ami soldat pour sa plendide et rapide "FLECHE BLEUE" :wink:
Image
Je la garde precieusement.... 8)

Je vais pouvoir completer mon organigramme

Je vous souhaite une excelente journée 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Relier graphiquement deux Gadgets [Resolu]

Message par Le Soldat Inconnu »

il y a un petit bug quand tu te places parfaitement à la verticale ou à l'horizontale du point de départ, histoire de faire l'em... :mrgreen:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Relier graphiquement deux Gadgets [Resolu]

Message par kernadec »

bonsoir oui
et aussi ligne 52
ligne 52

Code : Tout sélectionner

ResizeGadget(#ImageGadget,  Largeur, Hauteur - y1, x1, Hauteur - y)
lihne 116

Code : Tout sélectionner

DessineFleche(Largeur - 1, Hauteur - 1)
et un code avec les épaisseurs en mode APi

Cordialement


Code : Tout sélectionner

Enumeration
#Fenetre
#Image_0
#Image_1
#ImageGadget
EndEnumeration
Global dc.l,epais.l,Hauteur.l,Largeur .l,Pos.l
Hauteur = 300
Largeur = 400
Global DepartX
Global DepartY
Global Passage
epais=12
Pos=34
CreateImage(#Image_0, Largeur, Hauteur) 
CreateImage(#Image_1, Largeur, Hauteur)
Procedure Ligne(x,y,x1,y1,Width,color) 
 pen=CreatePen_(#PS_SOLID,Width,color) 
 penOld=SelectObject_(DC,pen) 
 MoveToEx_(DC,x,y,0):LineTo_(DC,x1,y1) 
 DeleteObject_(pen) 
 DeleteObject_(penOld) 
EndProcedure 
Procedure DessineFleche(x, y)

Static MemX, MemY

If MemX = x And MemY = Y
	ProcedureReturn
Else
	MemX = X
	MemY = y 
EndIf

If Not Passage And x <> 0 And y <> 0
	Passage = #True
	DepartX = X
	DepartY = Y
EndIf 

dc=StartDrawing(ImageOutput(#Image_1))
  
	DrawImage(ImageID(#Image_0), 0, 0)
		
If x => DepartX And y <= DepartY ; Haut droit
		
	x1 = Abs(Largeur + x - (Largeur * 2))
	y1 = Hauteur - y
	
	If x1 <= 1 : x1 = 1 : EndIf
	If y1 <= 1 : y1 = 1 : EndIf

	Ligne(0, GadgetHeight(#ImageGadget)- Pos, GadgetWidth(#ImageGadget) - Pos,GadgetHeight(#ImageGadget) - Pos, epais,RGB(226, 23, 29)) ; Horizontale
	Ligne(GadgetWidth(#ImageGadget) - Pos, Pos, GadgetWidth(#ImageGadget) - Pos, GadgetHeight(#ImageGadget) - Pos, epais,RGB(226, 23, 29)) ; Verticale
	Ligne(GadgetWidth(#ImageGadget) - Pos, Pos-epais, GadgetWidth(#ImageGadget) - Pos/2*3-epais, Pos*2, epais,RGB(226, 23, 29))
	Ligne(GadgetWidth(#ImageGadget) - Pos, Pos-epais, GadgetWidth(#ImageGadget) - Pos/2+epais, Pos*2, epais,RGB(226, 23, 29))
	StopDrawing()

	ResizeGadget(#ImageGadget,  Largeur, Hauteur - y1, x1, Hauteur + y)
		
ElseIf x => DepartX And y => DepartY ; Bas droit
	
	x1 = Abs(Largeur + x - (Largeur * 2))
	y1 = y - Hauteur
	
	If x1 <= 1 : x1 = 1 : EndIf
	If y1 <= 1 : y1 = 1 : EndIf
	
	Ligne(0, Pos, GadgetWidth(#ImageGadget) - Pos, Pos, epais,RGB(226, 23, 29)) ; Horizontale
	Ligne(GadgetWidth(#ImageGadget) - Pos, Pos, GadgetWidth(#ImageGadget) - Pos, GadgetHeight(#ImageGadget) - Pos, epais,RGB(226, 23, 29)) ; Verticale
	Ligne(GadgetWidth(#ImageGadget) - Pos, GadgetHeight(#ImageGadget) - Pos+epais, GadgetWidth(#ImageGadget) - Pos/2*3-epais, GadgetHeight(#ImageGadget) - Pos*2, epais,RGB(226, 23, 29))
	Ligne(GadgetWidth(#ImageGadget) - Pos, GadgetHeight(#ImageGadget) - Pos+epais, GadgetWidth(#ImageGadget) - Pos/2+epais, GadgetHeight(#ImageGadget) - Pos*2, epais,RGB(226, 23, 29))
	StopDrawing()
	
	ResizeGadget(#ImageGadget, Largeur, Hauteur, x1, Hauteur + y1)
	
ElseIf x <= DepartX And y => DepartY ; Bas gauche
	
	x1 = Abs(1 - x + largeur)
	y1 = Abs(Hauteur - y)
	
	If x1 <= 1 : x1 = 1 : EndIf
	If y1 <= 1 : y1 = 1 : EndIf
	
	Ligne(Pos, Pos, GadgetWidth(#ImageGadget), Pos, epais,RGB(226, 23, 29)) ; Horizontale
	Ligne(GadgetWidth(#ImageGadget) - x1 + Pos, Pos, GadgetWidth(#ImageGadget)-x1 + Pos, GadgetHeight(#ImageGadget)- Pos, epais,RGB(226, 23, 29)) ; Verticale
	Ligne(GadgetWidth(#ImageGadget) - x1 + Pos, GadgetHeight(#ImageGadget) - Pos+epais, GadgetWidth(#ImageGadget) - x1 + Pos/2*3+epais, GadgetHeight(#ImageGadget) - Pos*2, epais,RGB(226, 23, 29))
	Ligne(GadgetWidth(#ImageGadget) - x1 + Pos, GadgetHeight(#ImageGadget) - Pos+epais, GadgetWidth(#ImageGadget) - x1 + Pos/2-epais, GadgetHeight(#ImageGadget) - Pos*2, epais,RGB(226, 23, 29))
	StopDrawing()
	
	ResizeGadget(#ImageGadget, x ,Hauteur, x1, Hauteur + y)
		
ElseIf x <= DepartX And y <= DepartY  ; Haut gauche
	
	x1 = Abs(1 - x + Largeur)
	y1 = Abs(1 - y + Hauteur)
	
	If x1 <= 1 : x1 = 1 : EndIf
	If y1 <= 1 : y1 = 1 : EndIf

	Ligne(Pos, GadgetHeight(#ImageGadget) - Pos, GadgetWidth(#ImageGadget),GadgetHeight(#ImageGadget) - Pos, epais,RGB(226, 23, 29)) ; Horizontale
	Ligne(GadgetWidth(#ImageGadget) - x1 + Pos, Pos, GadgetWidth(#ImageGadget) - x1 + Pos, GadgetHeight(#ImageGadget) - Pos, epais,RGB(226, 23, 29)) ; Verticale
	Ligne(GadgetWidth(#ImageGadget) - x1 + Pos, Pos-epais, GadgetWidth(#ImageGadget) - x1 + Pos/2*3+epais, Pos*2, epais,RGB(226, 23, 29))
	Ligne(GadgetWidth(#ImageGadget) - x1 + Pos, Pos-epais, GadgetWidth(#ImageGadget) - x1 + Pos/2-epais, Pos*2, epais,RGB(226, 23, 29))
	StopDrawing()

	ResizeGadget(#ImageGadget, x, y, x1, y1)
	
EndIf

ResizeImage(#Image_1, x1, y1)
SetGadgetState(#ImageGadget,ImageID(#Image_1))

EndProcedure

OpenWindow(#Fenetre, 0, 0, 800, 600, "Fleche multidirectionnelle",  #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar)
ImageGadget(#ImageGadget,0, 0, 0, 0, ImageID(#Image_1))
StartDrawing(ImageOutput(#Image_0))
Box(0, 0, Largeur, Largeur, RGB(255, 255, 255))
StopDrawing()

DessineFleche(Largeur - 1, Hauteur - 1)
					
Repeat  

Evenement = WaitWindowEvent()
MouseX = WindowMouseX(#Fenetre)
MouseY = WindowMouseY(#Fenetre)

Select Evenement
		
	Case #WM_MOUSEMOVE
	
		If GetAsyncKeyState_(#VK_LBUTTON)
		DessineFleche(MouseX , MouseY)
		EndIf         

EndSelect
		
Until Evenement = #PB_Event_CloseWindow

Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Relier graphiquement deux Gadgets [Resolu]

Message par Kwai chang caine »

Alors la comme pour l'aide du SOLDAT.....les bras m'en serait tombé...mais vu que j'en ai plus...
J'ai bien peur que ce soit le tour de la veuve et les deux orphelines qui en choient sur le sol 8O

C'est exactement ce que je voulais 8) ...c'est pas facile de faire comprendre par texte ce genre de chose.
En plus tu me fais gagner un temps de dingue, car j'avais commencé a epaissir la fleche...et tu va rire... :lol: :lol: hihihih !!! si si tu va rire ..... :lol: :lol: j'y arrivais plus

J'te dis pour moi la prog, c'est comme une couverture trop petite..quand je me couvre les epaules...j'ai froid aux c.... :mrgreen:

Cette fois c'est la bonne....je rajoute la couleur..comme avec MIR...et je la jette dans mon programme pour qu'elle prenne sa place aux milieu de ses copines, les losanges (qui marchent depuis la 4.41 merci FRED :wink:)

Nadine bonzai....qu'est ce que cela aura été compliqué de faire un truc simple 8O

Et encore je crois que je vais m'arreter la...je suis juste en train de rajouter des "Groupes" pour pouvoir mettre plusieurs elements ensembles et les deplacer ensemble, car ça c'est pratique.
Je fais ça avec les containergadgets...et ben, je m'amuse comme un fou, pour mettre ces trucs dans un area et en plus les autres gadgets dedans et tout ça en dynamique :lol: ...j'me marre :lol: :lol:

Rien qu'hier 12 heures n'auraient pas suffit pour que je manipule le menu contextuel et gerer les groupes dedans :oops:
C'est encore grace a l'aide d'un de vous TROND que j'ai pu m'en sortir :oops:

Quand KCC programme..."All the world programming" :mrgreen:

En tout cas...je ne sais pas pourquoi,..............
Mais en me couchant, j'avais la sensation d'avoir un peu trop reflechi :roll:

Image

Encore merci de votre aide.....est il besoin de vous le dire à nouveau :roll:
Sisi....en fin de compte on le dis jamais assez ...

JE VOUS AIMES !!!!Image

Excelente journée à vous tous 8)
Et je signe d'un Z qui veeeeeuuut diiiiiiiiiiiire Zérroooooooooooooooooooo !!!!

Un gros beneeeeeet qui programme toute la nuuuuuuuuuuuuuuuiit
Cours vers l'APIiiiiiiiiii au galooooooop
Son nom.....il le signe au pointeur de la souriiiiiiiiiiiiiis.....d'un Z qui veeeeeuuut diiiiiiiiiiiire Zérroooooooooooooooooooo !!!!

Zérroooooooooooooooooooo !!!! Zérroooooooooooooooooooo !!!!
Bouffon.... qui fait malgré ses chooooooooix
Zérroooooooooooooooooooo !!!! Zérroooooooooooooooooooo !!!!
Des prog....... qui marchent pas, chaque foooooooois !!!!

Zérroooooooooooooooooooo !!!! Zérroooooooooooooooooooo !!!!Zérroooooooooooooooooooo !!!! Zérroooooooooooooooooooo !!!!Zérroooooooooooooooooooo !!!! Zérroooooooooooooooooooo !!!!
Zérroooooooooooooooooooo !!!! Zérroooooooooooooooooooo !!!!
Zérroooooooooooooooooooo !!!!
Zérroooooooooooooooooooo !!!!
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Relier graphiquement deux Gadgets [Resolu]

Message par kernadec »

bonsoir KCC

ton exemple ma fait comprendre ce que tu voulais.
cela ma donner des idées, Justement j'avais besoin d'une image qui se déplace
avec le souris et de la redimensionner, et .... de flèches en flèches
j'en suis arrivé là, le cerveau travail tout seul pendant le sommeil,
alors voila de la dynamique pour tes flèches.
Je sais pas si ca va te plaire, mais je trouve ce résultat intéressant.
j'ai laissé les retournement !! ce ne seras pas très difficile a régler
Cordialement

Code : Tout sélectionner

; #####################################################
; #######     kernadec en janvier 2010           ######
;        sur l'dée de fleche du projet KCC  
;      flèche au choix 8 directions avec la molette
;       deplacement clic gauche taille clic droit
; #####################################################
#WM_MOUSEWHEEL = $20A 
Enumeration
#Fenetre
#Image_0
#Image_1
#ImageGadget
#boutonGadget_0
#boutonGadget_1
#boutonGadget_2
#boutonGadget_3
EndEnumeration
Global dc.l,epais.l,fleche.l,px.l
winl.l=800
winh.l=600
Posx.l=0
Posy.l=0
Posl.l=300
Posh.l=300
epais=20
Px=45
Procedure.w MouseWheelDelta() 
	z.w=((EventwParam()>>16)&$FFFF) 
	ProcedureReturn -(z/100) 
EndProcedure 
Procedure Ligne(x,y,x1,y1,Width,color) 
pen=CreatePen_(#PS_SOLID,Width,color) 
penOld=SelectObject_(DC,pen) 
MoveToEx_(DC,x,y,0):LineTo_(DC,x1,y1) 
DeleteObject_(pen) 
DeleteObject_(penOld) 
EndProcedure 
Procedure dessin(Posx,Posy,Posl,Posh) 
    DisableGadget(#ImageGadget,0)
 dc=StartDrawing( ImageOutput(#Image_1))
		Box(0,0,WindowWidth(#Fenetre),WindowHeight(#Fenetre),RGB(225,225,225))
		DrawImage(ImageID(#Image_0),Posx,Posy,Posl,Posh)	 
		If fleche=0
			Ligne(Posx,Posy+px,Posx+Posl-px,Posy+px,epais,RGB(226,23,29)) ; Horizontale
			Ligne(Posx+Posl-px,Posy+px,Posx+Posl-px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Verticale
			Ligne(Posx+Posl-px,Posy+Posh-px,Posx+Posl-px/2*3,Posy+Posh-px*2,epais,RGB(226, 23, 29))
			Ligne(Posx+Posl-px,Posy+Posh-px,Posx+Posl-px/2,Posy+Posh-px*2,epais,RGB(226, 23, 29))
		EndIf
		If fleche=1
			Ligne(Posx+px,Posy+Posh-px,Posx+Posl-px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Horizontale
				Ligne(Posx+px,Posy,Posx+px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Verticale
			Ligne(Posx+Posl-px*2,Posy+Posh-px/2*3,Posx+Posl-px,Posy+Posh-px,epais,RGB(226, 23, 29))
			Ligne(Posx+Posl-px*2,Posy+Posh-px/2,Posx+Posl-px,Posy+Posh-px,epais,RGB(226, 23, 29))
		EndIf
		If fleche=2
			Ligne(Posx+px,Posy+px,Posx+Posl,Posy+px,epais,RGB(226, 23, 29)) ; Horizontale
			Ligne(Posx+px,Posy+px,Posx+px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Verticale
			Ligne(Posx+px,Posy+Posh-px,Posx+px/2*3,Posy+Posh-px*2,epais,RGB(226, 23, 29))
			Ligne(Posx+px,Posy+Posh-px,Posx+px/2,Posy+Posh-px*2,epais,RGB(226, 23, 29))
		EndIf
		If fleche=3
			Ligne(Posx+px,Posy+Posh-px,Posx+Posl-px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Horizontale
			Ligne(Posx+Posl-px,Posy,Posx+Posl-px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Verticale
			Ligne(Posx+px*2,Posy+Posh-px/2*3,Posx+px,Posy+Posh-px,epais,RGB(226, 23, 29))
			Ligne(Posx+px*2,Posy+Posh-px/2,Posx+px,Posy+Posh-px,epais,RGB(226, 23, 29))
		EndIf
		If fleche=4
			Ligne(Posx+px,Posy+Posh-px,Posx+Posl,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Horizontale
			Ligne(Posx+px,Posy+px,Posx+px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Verticale
			Ligne(Posx+px,Posy+px,Posx+px/2*3,Posy+px*2,epais,RGB(226, 23, 29))
			Ligne(Posx+px,Posy+px,Posx+px/2,Posy+px*2,epais,RGB(226, 23, 29))
		EndIf
		If fleche=5
			Ligne(Posx+px,Posy+px,Posx+Posl-px,Posy+px,epais,RGB(226, 23, 29)) ; Horizontale
			Ligne(Posx+Posl-px,Posy+px,Posx+Posl-px,Posy+Posh,epais,RGB(226, 23, 29)) ; Verticale
			Ligne(Posx+px*2,Posy+px/2*3,Posx+px,Posy+px,epais,RGB(226, 23, 29))
			Ligne(Posx+px*2,Posy+px/2,Posx+px,Posy+px,epais,RGB(226, 23, 29))
		EndIf
		If fleche=6
			Ligne(Posx,Posy+Posh-px,Posx+Posl-px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Horizontale
			Ligne(Posx+Posl-px,Posy+px,Posx+Posl-px,Posy+Posh-px,epais,RGB(226, 23, 29)) ; Verticale
			Ligne(Posx+Posl-px,Posy+px,Posx+Posl-px/2*3,Posy+px*2,epais,RGB(226, 23, 29))
			Ligne(Posx+Posl-px,Posy+px,Posx+Posl-px/2,Posy+px*2,epais,RGB(226, 23, 29))
		EndIf
		If fleche=7
			Ligne(Posx+px,Posy+px,Posx+Posl-px,Posy+px,epais,RGB(226, 23, 29)) ; Horizontale
			Ligne(Posx+px,Posy+px,Posx+px,Posy+Posh,epais,RGB(226, 23, 29)) ; Verticale
			Ligne(Posx+Posl-px*2,Posy+px/2*3-y1,Posx+Posl-px,Posy+px-y1,epais,RGB(226, 23, 29))
			Ligne(Posx+Posl-px*2,Posy+px/2-y1,Posx+Posl-px,Posy+px-y1,epais,RGB(226, 23, 29))
		EndIf
		StopDrawing()
		ButtonGadget(#boutonGadget_0, 120,80, 50, 30, "texte" )
    ButtonGadget(#boutonGadget_1, 440,180, 50, 30, "texte" )
    ButtonGadget(#boutonGadget_2, 240,390, 50, 30, "texte" )
    ButtonGadget(#boutonGadget_3, 620,290, 50, 30, "texte" )
    Delay(2)
    DisableGadget(#ImageGadget,1)
    SetGadgetState(#ImageGadget,ImageID(#Image_1))
EndProcedure
OpenWindow(#Fenetre, 0, 0,winl,winh, "",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
	  CreateImage(#Image_0,winl,winh)
	  CreateImage(#Image_1,winl,winh)
		StartDrawing(ImageOutput(#Image_0))
			Box(0,0,winl,winh,RGB(255,255,255))
		StopDrawing()
		ImageGadget(#ImageGadget,Posx,Posy,200,200,ImageID(#Image_0))
		ButtonGadget(#boutonGadget_0, 120,80, 50, 30, "texte" )
    ButtonGadget(#boutonGadget_1, 440,180, 50, 30, "texte" )
    ButtonGadget(#boutonGadget_2, 240,390, 50, 30, "texte" )
    ButtonGadget(#boutonGadget_3, 620,290, 50, 30, "texte" )
    SetGadgetState(#ImageGadget,ImageID(#Image_0))
    dessin(Posx,Posy,Posl,Posh)
    bm=#False
Repeat
event = WaitWindowEvent(1)
	Select Event
		Case #PB_Event_Gadget   
		 Select EventGadget()	
	  	 Case #boutonGadget_0
		    Debug "B0"
		   Case #boutonGadget_1
		    Debug "B1"
		   Case #boutonGadget_2
		    Debug "B2"
		   Case #boutonGadget_3
		    Debug "B3"
		 EndSelect
		EndSelect
		If event=#WM_MOUSEWHEEL 
		fleche+Abs(MouseWheelDelta())
		fleche=fleche%8
		If fleche>7:fleche=7:EndIf
			dessin(Posx,Posy,Posl,Posh) 
		EndIf
		If GetAsyncKeyState_(#VK_LBUTTON) Or GetAsyncKeyState_(#VK_RBUTTON) 
		If event=#WM_RBUTTONUP   
		bm=#False
		EndIf
		If event=#WM_LBUTTONUP   
		bm=#False
		EndIf
		If event=#WM_LBUTTONDOWN
		bm=#True
		Posx1 = WindowMouseX(0)-Posx
		Posy1 = WindowMouseY(0)-Posy
		EndIf
		If event=#WM_RBUTTONDOWN
		bm=#True
		Posl1 = WindowMouseX(0)-Posl
		Posh1 = WindowMouseY(0)-Posh
		EndIf
		EndIf
		If event=#WM_MOUSEMOVE
		If bm=#True
		If GetAsyncKeyState_(#VK_LBUTTON)
	  	Posx = WindowMouseX(0)-Posx1
	  	Posy = WindowMouseY(0)-Posy1
		  dessin(Posx,Posy,Posl,Posh)
		EndIf 
		EndIf 
		If GetAsyncKeyState_(#VK_RBUTTON) 
		  Posl=WindowMouseX(0)-Posl1
		  Posh=WindowMouseY(0)-Posh1
		  dessin(Posx,Posy,Posl,Posh)
		EndIf
		EndIf
Until event = #PB_Event_CloseWindow 
Dernière modification par kernadec le dim. 24/janv./2010 0:17, modifié 3 fois.
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Relier graphiquement deux Gadgets [Resolu]

Message par kernadec »

correction du code précèdent cause le modulo %7
n'afficher pas la flèche 8ème flèche!!

en ce moment, je suis arrivé à nouveau devant le problème des boutons gadgets avec
imagegadget qui les rend inactifs, il qui sont apparent mais voila il bloquent dommage ...

cordialement
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Relier graphiquement deux Gadgets [Resolu]

Message par Kwai chang caine »

Cool encore une methode 8)

Dis donc....T'es pire que cupidon maintenant ...t'es le roi de la fleche :D

Image
Kernidon a écrit :en ce moment, je suis arrivé à nouveau devant le problème des boutons gadgets avec
imagegadget qui les rend inactifs, il qui sont apparent mais voila il bloquent dommage ...
Ce qui est sur...c'est que FRED a bien dit que PB ne supportait pas bien le chevauchement de deux gadget, qu'il etait pas fait pour ça.
C'est peut etre ça le bleme :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Relier graphiquement deux Gadgets [Resolu]

Message par kernadec »

bonsoir KCC
merci pour l'humour de tes cartes postales..

Correction du code précédent, Car en utilisant disablegadget avec imagegadget
et en replaçant tous les boutons et SetGadgetState à la suite dans la procédure
on obtient des boutons actifs, mais avec des soucis de clignotements.

Cordialement
Répondre