Zoom et clic soucis (résolu) & Zoom Canvas
Publié : dim. 08/mai/2011 16:30
bonjour
j'aurais aimé me faire un code de ce genre avec Canvasgadget
mais voilà, je n'y suis pas arrivé..
peut être pas tout compris de ce gadget...et comment utiliser ReziseGadget avec CanvasGadget
sinon des commandes "CanvasGadget_ScaleX et Y" seraient bienvenues.
Car je n'ai pas vraiment trouvé comment régler le problème du clic gauche dans ce code avec " EventType( ) #PB_EventType_LeftClick"
car celui-ci n'as pas de contraire pour lui interdire de fonctionner sous certaines conditions.
Alors, Quand on utilisent les ascenseurs après un déplacement de l'image avec le clic gauche, les soucis commence..
donc... j'ai mis un test à l'arrache..
si quelqu'un à une meilleur solution, je suis preneur..
Cordialement
j'aurais aimé me faire un code de ce genre avec Canvasgadget
mais voilà, je n'y suis pas arrivé..
peut être pas tout compris de ce gadget...et comment utiliser ReziseGadget avec CanvasGadget
sinon des commandes "CanvasGadget_ScaleX et Y" seraient bienvenues.
Car je n'ai pas vraiment trouvé comment régler le problème du clic gauche dans ce code avec " EventType( ) #PB_EventType_LeftClick"
car celui-ci n'as pas de contraire pour lui interdire de fonctionner sous certaines conditions.
Alors, Quand on utilisent les ascenseurs après un déplacement de l'image avec le clic gauche, les soucis commence..
donc... j'ai mis un test à l'arrache..
si quelqu'un à une meilleur solution, je suis preneur..
Cordialement
Code : Tout sélectionner
;####################################################################
;### image Zoom scroll deplacer l'image avec mouse ###
;### par kernadec mai 2011 ###
;####################################################################
Procedure.w MouseWheelDelta()
xxw.w = ((EventwParam()>>16)&$FFFF)
ProcedureReturn -(xxw / 100)
EndProcedure
win_w=700
win_h=700
image_w.l=1000
image_h.l=1000
ExamineDesktops()
CreateImage(0,image_w+DesktopWidth(0),image_h+DesktopHeight(0))
CreateImage(1,image_w+DesktopWidth(0),image_h+DesktopHeight(0))
LoadImage(0, "c:\purebasic\examples\sources\data\Geebee2.bmp")
ResizeImage(0,image_w,image_h,#PB_Image_Smooth)
CopyImage(0,1)
OpenWindow(0,0, 0, win_w, win_h, "Zoom ScrollArea clic deplace Kernadec", #WS_SYSMENU | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)
ScrollAreaGadget(2, 0, 0,WindowWidth(0),WindowHeight(0),image_w,image_h, 30)
SetWindowColor(0,#White)
SetGadgetColor(2,#PB_Gadget_BackColor,#White)
SetGadgetAttribute(2,#PB_ScrollArea_X,(image_w-win_w)/2)
SetGadgetAttribute(2,#PB_ScrollArea_Y,(image_h-win_h)/2)
ImageGadget(0,0,0,image_w,image_h,ImageID(0))
ImageGadget(1,0,0,image_w,image_h,ImageID(1))
bm=#False
Repeat
Event= WaitWindowEvent()
If WindowMouseX(0)>win_w-30 Or WindowMouseY(0)>win_h-30 ; manque constante " #PB_EventType_LeftClick_NO "
bm=#False
EndIf
Select event
Case #PB_Event_SizeWindow
ResizeGadget(2,#PB_Ignore,#PB_Ignore,WindowWidth(0),WindowHeight(0))
SetGadgetColor(2,#PB_Gadget_BackColor,#White)
win_w=WindowWidth(0)
win_h=WindowHeight(0)
Case #PB_Event_Gadget
If EventGadget()=0 ; <<<<<<<<<<<<<<<< ici
Select EventType() ;select #PB_EventType_LeftClick exemple du Soldat inconnu
Case #PB_EventType_LeftClick
bm=#True
PosXm = WindowMouseX(0)-PosXm1
PosYm = WindowMouseY(0)-PosYm1
EndSelect
EndIf
Case #WM_MOUSEWHEEL
wheel_x=wheel_x+(MouseWheelDelta() *10)
wheel_y=wheel_y+(MouseWheelDelta() *10)
Case #WM_RBUTTONDOWN
bm=#True
PosXm = WindowMouseX(0)-PosXm1
PosYm = WindowMouseY(0)-PosYm1
Case #WM_MOUSEMOVE
If bm=#True
PosXm1 = WindowMouseX(0)-PosXm
PosYm1 = WindowMouseY(0)-PosYm
EndIf
Case #WM_LBUTTONUP
bm=#False
Case #WM_RBUTTONUP
bm=#False
EndSelect
StartDrawing( ImageOutput(1) );
Box(-20,-20,WindowWidth(0)*2,WindowHeight(0)*2,RGB(255,255,255))
DrawImage(ImageID(0),PosXm1-(wheel_x/2),PosYm1-(wheel_y/2),(image_w)+wheel_x,(image_h)+wheel_y)
StopDrawing()
SetGadgetState(1,ImageID(1))
Until Event= #PB_Event_CloseWindow
End