Möchte das Bild und nicht die SCROLL_AreaGadget verschieben, jemand einen Tip?
Code: Alles auswählen
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;- [07] SCROLL
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;=> DE/ENCODER
UsePNGImageDecoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UseJPEG2000ImageDecoder()
UseJPEG2000ImageEncoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
; -------------------------------
InitMouse()
; -------------------------------
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;{ SCROLL
Enumeration
; #Win
#DRW_SCROLL_Image
EndEnumeration
; ================================
#SCROLL_Zoomspeed = 1
#SC_DragMove = $F012
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;{ SCROLL
Global Win
Global Container_GraphX = 805
Global Container_GraphY = 840
Global Btn_10_GrapXY = 10
Global *gOldEditProc_29
Global *ImageMemory
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;{
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CreateImage(#DRW_SCROLL_Image, 80,80)
; =============================================================
; LoadImage(#DRW_SCROLL_Image,"D:\[Pure@API]\[STORE]\BMP\Abendessen.bmp")
LoadImage(#DRW_SCROLL_Image, "D:\[Pure@API]\[STORE]\PNG\Arduino UNO Bild 2.png")
; =============================================================
; If MemorySize(*ImageMemory) <> 0: FreeMemory(*ImageMemory):EndIf
; -------------------------------
*ImageMemory = EncodeImage(#DRW_SCROLL_Image)
; =============================================================
If IsImage(#DRW_SCROLL_Image):FreeImage(#DRW_SCROLL_Image):EndIf
; -------------------------------
CatchImage(#DRW_SCROLL_Image, *ImageMemory, MemorySize(*ImageMemory))
; =============================================================
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;{ [07] S C R O L L I N G
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Global SCROLL_Aktiv = 0
; ----------------------------------------------
Global Container_07
Global SCROLL_ImageGadget
Global SCROLL_AreaGadget
Global SCROLL_Scrollbar
; ----------------------------------------------
Global SCROLL_Wheel = 8
; ------------------------------
Global Scroll_Trackgadget_Min = 1
Global Scroll_Trackgadget_Max = 15
; ----------------------------------------------
Global Scroll_LeseBild_GraphX.f
Global Scroll_LeseBild_GraphY.f
; ----------------------------------------------
Global Scroll_Zoom_Faktor.f = 1.0
; ----------------------------------------------
Global Scroll_Case_Faktor = 8
; ----------------------------------------------
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>
;-- S C R O L L
;- >>>>>>>>>>>>>>>>>>>>>>>>>
Procedure.w MouseWheelDelta()
Static MouseDelta.w
Define ret
MouseDelta + ((EventwParam()>>16)&$FFFF)
ret = MouseDelta/120
MouseDelta - ret*120
ProcedureReturn -ret
EndProcedure
Procedure IsMouseOver(hWnd)
GetWindowRect_(hWnd,mr.RECT)
GetCursorPos_(mp.POINT)
Result = PtInRect_(mr,mp\y << 32 + mp\x)
ProcedureReturn Result
EndProcedure
; ----------------------------
Procedure Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
; ----------------------------
Protected Scroll_LeseBildKopieFormat
; -----------------------------
Protected Scroll_web_x.f
Protected Scroll_web_y.f
; -----------------------------
Protected FSZ_Display_Bild_GraphX$
Protected FSZ_Display_Bild_GraphY$
Protected RightText_Summe$
; -----------------------------
If IsImage(#DRW_SCROLL_Image):FreeImage(#DRW_SCROLL_Image):EndIf
CatchImage(#DRW_SCROLL_Image, *ImageMemory, MemorySize(*ImageMemory))
; ----------------------------
If Scroll_LeseBildKopieFormat = 1
; Horizontales Bild
Scroll_web_x = Int(Scroll_LeseBild_GraphX * Scroll_Zoom_Faktor)
Scroll_web_y = Int(Scroll_LeseBild_GraphY * Scroll_Zoom_Faktor)
ElseIf Scroll_LeseBildKopieFormat = 2
; Vertikales Bild
Scroll_web_x = Int(Scroll_LeseBild_GraphX * Scroll_Zoom_Faktor)
Scroll_web_y = Int(Scroll_LeseBild_GraphY * Scroll_Zoom_Faktor)
Else
Scroll_web_x = Int(Scroll_LeseBild_GraphX * Scroll_Zoom_Faktor)
Scroll_web_y = Int(Scroll_LeseBild_GraphY * Scroll_Zoom_Faktor)
EndIf
; ----------------------------
; Debug "Scroll_web_x = "+Scroll_web_x
; Debug "Scroll_web_y = "+Scroll_web_y
; ----------------------------
If Scroll_web_x > 0
If Scroll_web_y > 0
ResizeImage(#DRW_SCROLL_Image, Scroll_web_x, Scroll_web_y,#PB_Image_Smooth)
EndIf
EndIf
; ----------------------------
ClearDebugOutput()
; ----------------------------
SetGadgetAttribute(SCROLL_AreaGadget, #PB_ScrollArea_InnerWidth, Scroll_web_x)
SetGadgetAttribute(SCROLL_AreaGadget, #PB_ScrollArea_InnerHeight, Scroll_web_y)
; ----------------------------
ResizeGadget(SCROLL_ImageGadget, #PB_Ignore, #PB_Ignore, Scroll_web_x, Scroll_web_y)
; ----------------------------
SetGadgetState(SCROLL_ImageGadget,ImageID(#DRW_SCROLL_Image))
; -----------------------------
FSZ_Display_Bild_GraphX$ = Str(Scroll_web_x)
FSZ_Display_Bild_GraphY$ = Str(Scroll_web_y)
; -----------------------------------
RightText_Summe$ = "SCROLL-IMAGE Breite/Höhe = "+FSZ_Display_Bild_GraphX$+" / "+FSZ_Display_Bild_GraphY$+" "
; -----------------------------------
; FSZ_LEFTTEXT(RightText_Summe$)
; -----------------------------------
HideGadget(SCROLL_ImageGadget,0)
; ----------------------------
EndProcedure
Procedure Scroll_Zooming(SCROLL_AreaGadget,SCROLL_ImageGadget, Faktor)
; -------------------------------
HideGadget(SCROLL_ImageGadget,1)
; -------------------------------
Select Faktor
;{ Minus
; -------------------------------
Case 1
Scroll_Zoom_Faktor = 0.27
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 2
Scroll_Zoom_Faktor = 0.33
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 3
Scroll_Zoom_Faktor = 0.4
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 4
Scroll_Zoom_Faktor = 0.48
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 5
Scroll_Zoom_Faktor = 0.57
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 6
Scroll_Zoom_Faktor = 0.69
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 7
Scroll_Zoom_Faktor = 0.83
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
;}
; -------------------------------
Case 8
Scroll_Zoom_Faktor = 1.0
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
; -------------------------------
;{ PLUS
Case 9
Scroll_Zoom_Faktor = 1.2
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 10
Scroll_Zoom_Faktor = 1.44
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 11
Scroll_Zoom_Faktor = 1.73
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 12
Scroll_Zoom_Faktor = 2.08
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 13
Scroll_Zoom_Faktor = 2.5
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 14
Scroll_Zoom_Faktor = 3.0
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
Case 15
Scroll_Zoom_Faktor = 3.6
Scroll_Image_Erstellen(SCROLL_AreaGadget,SCROLL_ImageGadget)
;}
; -------------------------------
EndSelect
; -------------------------------
EndProcedure
; ----------------------------
Procedure Scroll_End()
; ----------------------------
If SCROLL_Aktiv = 1
SCROLL_Aktiv = 0
; ShowContainer(Container_03)
End
EndIf
; ----------------------------
; FOCUS AUF
; ----------------------------
; SetActiveGadget(Zoom_I_Bild)
; ----------------------------
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure Scroll_StartUp2(SCROLL_AreaGadget, SCROLL_ImageGadget)
; =============================================================
If IsImage(#DRW_SCROLL_Image):FreeImage(#DRW_SCROLL_Image):EndIf
CatchImage(#DRW_SCROLL_Image, *ImageMemory,MemorySize(*ImageMemory))
; =============================================================
Scroll_LeseBild_GraphX = ImageWidth(#DRW_SCROLL_Image)
Scroll_LeseBild_GraphY = ImageHeight(#DRW_SCROLL_Image)
; =============================================================
SCROLL_Wheel = 8
; =============================================================
; ShowContainer(Container_07)
; =============================================================
; Scroll_Zooming(SCROLL_Wheel)
Scroll_Zooming(SCROLL_AreaGadget,SCROLL_ImageGadget, SCROLL_Wheel)
; =============================================================
SCROLL_Aktiv = 1
; =============================================================
EndProcedure
; ----------------------------
Procedure Scroll_StartUp(SCROLL_AreaGadget, SCROLL_ImageGadget)
; ----------------------------
; Weil wir schon im Fenster sind!!!!
; =============================================================
Scroll_LeseBild_GraphX = ImageWidth(#DRW_SCROLL_Image)
Scroll_LeseBild_GraphY = ImageHeight(#DRW_SCROLL_Image)
; =============================================================
SCROLL_Wheel = 8
; =============================================================
; ShowContainer(SCROLL_AreaGadget)
; =============================================================
; Scroll_Zooming(SCROLL_Wheel)
Scroll_Zooming(SCROLL_AreaGadget,SCROLL_ImageGadget, SCROLL_Wheel)
; =============================================================
SCROLL_Aktiv = 1
; =============================================================
EndProcedure
; ----------------------------
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Procedure DplClk_SCROLL_ImageGadget(hWnd, uMsg, wParam, lParam)
; *gOldEditProc_29 = SetWindowLongPtr_(GadgetID(SCROLL_ImageGadget), #GWL_WNDPROC, @DplClk_SCROLL_ImageGadget())
Protected Result = CallWindowProc_(*gOldEditProc_29, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_LBUTTONDBLCLK
Scroll_End()
Case #WM_LBUTTONDOWN
If IsMouseOver(GadgetID(SCROLL_ImageGadget))
SetCursor_(LoadCursor_(SCROLL_ImageGadget, #IDC_SIZEALL))
SendMessage_(GadgetID(SCROLL_ImageGadget), #WM_SYSCOMMAND , #SC_DragMove, 0)
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- [07] S C R O L L I N G
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Win = OpenWindow(#PB_Any, 0, 0, Container_GraphX, Container_GraphY, "S C R O L L I N G ", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; ------------------------------------------
Container_07 = ContainerGadget(#PB_Any,0,0,Container_GraphX, Container_GraphY,#PB_Container_Flat)
; ------------------------------------------
SCROLL_AreaGadget = ScrollAreaGadget(#PB_Any,0,0,Container_GraphX,Container_GraphY,Container_GraphX, Container_GraphY - 100,1 , #PB_ScrollArea_Single|#PB_ScrollArea_Center)
; ------------------------------------------
SetGadgetColor(SCROLL_AreaGadget, #PB_Gadget_BackColor, $F0FAFF)
; -------------------------------
SCROLL_Scrollbar = ShowScrollBar_(GadgetID(SCROLL_AreaGadget), #SB_BOTH, #False)
; -------------------------------
SCROLL_ImageGadget = ImageGadget(#PB_Any,
0,
0,
Container_GraphX,
Container_GraphY - Btn_10_GrapXY,
ImageID(#DRW_SCROLL_Image))
; -------------------------------
DisableGadget(SCROLL_ImageGadget,1)
; -------------------------------
CloseGadgetList()
; -------------------------------
CloseGadgetList()
; -------------------------------
; CALLBACK
*gOldEditProc_29 = SetWindowLongPtr_(GadgetID(SCROLL_ImageGadget), #GWL_WNDPROC, @DplClk_SCROLL_ImageGadget())
; -------------------------------
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- R U N
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Scroll_StartUp(SCROLL_AreaGadget, SCROLL_ImageGadget)
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- E V E N T
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Define FensterNummer,Event,Quit
; ----------------------------------
Repeat
; ==================================
Event = WaitWindowEvent()
FensterNummer.i = EventWindow()
; ==================================
;{ Mousewheel
If Event = #WM_MOUSEWHEEL
SCROLL_Wheel + MouseWheelDelta() * #SCROLL_Zoomspeed
If SCROLL_Wheel < 1 : SCROLL_Wheel = 1 : EndIf
If SCROLL_Wheel > 15 : SCROLL_Wheel = 15 : EndIf
; Debug "SCROLL_Wheel= "+SCROLL_Wheel
; Scroll_Zooming(SCROLL_Wheel)
Scroll_Zooming(SCROLL_AreaGadget,SCROLL_ImageGadget, SCROLL_Wheel)
EndIf
;}
; ==================================
;{ #WM_LBUTTONDOWN
If Event = #WM_LBUTTONDOWN
If IsMouseOver(GadgetID(SCROLL_ImageGadget))
SetCursor_(LoadCursor_(SCROLL_AreaGadget, #IDC_SIZEALL))
SendMessage_(GadgetID(SCROLL_AreaGadget), #WM_SYSCOMMAND , #SC_DragMove, 0)
EndIf
Debug "Latitude :" + Str(DesktopMouseX())
Debug "Longitude :" + Str(DesktopMouseY())
EndIf
;}
; ==================================
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>
;- PROGRAMMENDE
;- >>>>>>>>>>>>>>>>>>>>>>>>>