Da wäre der GrabImage befehl gut für geeignet
hier mal ein kleines Beispiel
erst mit der Linken Maustaste gedrück ein Rechteck Zeichnen
danach rechte Maustaste für Popupmenu
und Getimage auswählen
hoffe das ist was du suchst gruss Silbersurfer
Code: Alles auswählen
EnableExplicit
Define WinEvent,quit,MausDown,Draw,MausX,MausY,MbackupX,MbackupY,ImageGrab,GrabB,GrabH
Define mainWin = OpenWindow(#PB_Any,0,0,800,600,"Popup Menu und GrabImage",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
Define img = CreateImage(#PB_Any,400,600,32)
Define Canvas1 = CanvasGadget(#PB_Any,0,0,400,600)
Define Canvas2 = CanvasGadget(#PB_Any,400,0,400,600)
Define PopMenu = CreatePopupMenu(#PB_Any)
MenuItem(1, "Get Image")
;Random Zeichnug erstellen
Procedure Draw()
Protected R
For r=0 To 50
Circle(Random(400),Random(600),Random(30),RGB(Random(255),Random(255) ,Random(255)))
Next
EndProcedure
;ausgabe auf dem Image Img
If StartDrawing( ImageOutput(img) )
Draw()
StopDrawing()
EndIf
;übergabe vom Image an das Canvas1
SetGadgetAttribute(canvas1,#PB_Canvas_Image,ImageID(img))
Repeat
Draw=#False
WinEvent=WaitWindowEvent()
Select WinEvent
Case #PB_Event_CloseWindow
Quit=#True
Case #WM_RBUTTONDOWN
DisplayPopupMenu(PopMenu, WindowID(mainWin))
Case #PB_Event_Menu
Select EventMenu()
Case 1 ; GetImage
;hier wird das Image gegrabt und auf das Canvas 2 eingezeichnet
ImageGrab=GrabImage(img,#PB_Any,MbackupX,MbackupY,GrabB,GrabH)
If StartDrawing( CanvasOutput(Canvas2))
Box(0,0,400,600)
If IsImage(ImageGrab)
DrawImage(ImageID(ImageGrab),10,10)
EndIf
StopDrawing()
EndIf
EndSelect
Case #PB_Event_Gadget
MausX=GetGadgetAttribute(Canvas1, #PB_Canvas_MouseX)
MausY=GetGadgetAttribute(Canvas1, #PB_Canvas_MouseY)
Select EventType()
Case #PB_EventType_LeftButtonDown
MausDown=1 :Draw=#True
MbackupX=MausX
MbackupY=MausY
Case #PB_EventType_LeftButtonUp
MausDown=0 : draw=#False
GrabB=MausX-MbackupX :GrabH=MausY-MbackupY
Case #PB_EventType_MouseMove
Draw=#True
EndSelect
EndSelect
;start Zeichen Routine Canvas1
If Draw
If StartDrawing( CanvasOutput(Canvas1))
DrawImage(ImageID(img),0,0)
If MausDown
DrawingMode(#PB_2DDrawing_Outlined)
Box(MbackupX,MbackupY,MausX-MbackupX,MausY-MbackupY,RGB(255,255,255))
EndIf
StopDrawing()
EndIf
EndIf
Until Quit=#True