PB 4.30
Hallo Zusammen.....
Hab die irgendwie nen leck im Hirn.
Hier Danilos Code
Code: Alles auswählen
Procedure WindowProc(hWnd,Msg,wParam,lParam)
Shared WindowProc_MouseSelect
Shared WindowProc_MouseSelectStartX, WindowProc_MouseSelectLastX
Shared WindowProc_MouseSelectStartY, WindowProc_MouseSelectLastY
Shared WindowProc_MouseSelectRect.RECT
Select Msg
Case #WM_LBUTTONDOWN
WindowProc_MouseSelect = 1
WindowProc_MouseSelectStartX = lParam&$FFFF
WindowProc_MouseSelectStartY = (lParam>>16)&$FFFF
GetClientRect_(hWnd,winrect.RECT)
MapWindowPoints_(hWnd,0,winrect,2)
ClipCursor_(winrect)
ProcedureReturn 0
Case #WM_LBUTTONUP
If WindowProc_MouseSelect > 1
DrawMouseSelector(hWnd)
If WindowProc_MouseSelectRect\left <> WindowProc_MouseSelectRect\right And WindowProc_MouseSelectRect\top <> WindowProc_MouseSelectRect\bottom
OnMouseSelection(hWnd,WindowProc_MouseSelectRect\left,WindowProc_MouseSelectRect\top,WindowProc_MouseSelectRect\right-WindowProc_MouseSelectRect\left,WindowProc_MouseSelectRect\bottom-WindowProc_MouseSelectRect\top)
SetCapture_(0)
EndIf
EndIf
ClipCursor_(0)
WindowProc_MouseSelect = 0
ProcedureReturn 0
Case #WM_MOUSEMOVE
If WindowProc_MouseSelect > 0 And wParam & #MK_LBUTTON
If WindowProc_MouseSelect > 1
DrawMouseSelector(hWnd)
Else
WindowProc_MouseSelect + 1
EndIf
WindowProc_MouseSelectLastX = lParam&$FFFF
WindowProc_MouseSelectLastY = (lParam>>16)&$FFFF
DrawMouseSelector(hWnd)
SetCapture_(hWnd)
EndIf
ProcedureReturn 0
EndSelect
old=GetWindowLong_(hWnd,#GWL_USERDATA)
If old
ProcedureReturn CallWindowProc_(old,hWnd,Msg,wParam,lParam)
Else
DefWindowProc_(hWnd,Msg,wParam,lParam)
EndIf
EndProcedure
Procedure SelectorImage(x,y,w,h,hImage)
img = ImageGadget(#PB_Any,x,y,w,h,hImage)
If img
old = SetWindowLong_(GadgetID(img),#GWL_WNDPROC,@WindowProc())
SetWindowLong_(GadgetID(img),#GWL_USERDATA,old)
EndIf
ProcedureReturn img
EndProcedure
OpenWindow(0,0,0,630,630,"Mega Mouse Selector",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
If CreateImage(1,300,300)=0
MessageRequester("ERROR","Cant create image"):End
EndIf
If StartDrawing(ImageOutput(1))
For y = 0 To 299 Step 2
For x = 0 To 299 Step 2
Plot(x,y,Random($FFFFFF))
Next x
Next y
StopDrawing()
EndIf
CreateGadgetList(WindowID(0))
SAGGrap = ScrollAreaGadget(1001, 1, 1, 600, 600, 600, 600, 10, #PB_ScrollArea_Center)
gadget1 = SelectorImage( 10, 10,300,300,ImageID(1))
gadget2 = SelectorImage(320, 10,300,300,ImageID(1))
gadget3 = SelectorImage( 10,320,300,300,ImageID(1))
gadget4 = SelectorImage(320,320,300,300,ImageID(1))
HideWindow(0,0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
; CursorPosition = 143
; FirstLine = 81
Ich hab den implementiert.
Funktioniert auch ... aber irgendwie raff ich es nicht anstelle der gezeichneten kästen, nen load image --> GragImage auf das geladene image --> mit Scrollareagadget zu bekommen ....
Ich kann dann im eingefügten Image kein rahmen mehr ziehen.
Im Prinzip will ich mir das Bild anzeigen lassen und dann einen rahmen ziehen um den ausschnitt zu vergrößern.
Is halt nen Zoom.
Hier mein Code.
Code: Alles auswählen
Image = LoadImage(#PB_Any,dat) ; 'dat' is ein beliebiges Bild
ImageGrap = GrabImage(Image, #PB_Any, 1, 1, ImageWidth(Image), ImageHeight(Image))
divbreite=1400-breite
divhoehe=1135-hoehe
If breite < hoehe
divb=1130/hoehe
resizefaktor=divb
Else
divb=1421/breite
resizefaktor=divb
EndIf
widthsize=breite*resizefaktor
heightsize=hoehe*resizefaktor
ResizeImage(ImageGrap, widthsize, heightsize)
SAGGrap = ScrollAreaGadget(#PB_Any, 1, 1, 1425, 1135, ImageWidth(ImageGrap), ImageHeight(ImageGrap), 10, #PB_ScrollArea_Center)
IAGGrap = ImageGadget(#PB_Any, 0, 0, 0, 0,ImageID(ImageGrap), #PB_Image_Border)
gadget1 = SelectorImage( 1, 1, widthsize, heightsize, GadgetID(IAGGrap))
Procedure SelectorImage(x,y,w,h,hImage)
img = ImageGadget(#PB_Any,x,y,w,h,hImage)
If img
old = SetWindowLong_(GadgetID(img),#GWL_WNDPROC,@WindowProc())
SetWindowLong_(GadgetID(img),#GWL_USERDATA,old)
EndIf
ProcedureReturn img
EndProcedure
Ist nur ein Auszug, aber vielleicht könnt ihr mir dennoch sagen was Syntaktisch oder Handle mäßig daran schief läuft.
Focus hat nach dem laden des Image ein anderes Window und actives gadget is nen Stringgadget.