Ich habe seit langem mal wieder eine Frage
Ich habe aus dem Codearchiv die Bildschirmlupe . Teilweise sieht sich die Lupe allerdings selber und vergrößert sich dann ins Unendliche . Es gibt auch Störungen wenn die Lupe sich am Bildschirmrand befindet .
Das möchte ich logischerweise ausschalten , so wie bei der Microsoft Lupe .
Ich wollte eigentlich aus Maus-, Fenster-und Bildschirmrand Koordinaten eine Formel machen welche dann die falschen Grafiken entfernt . Das ist allerdings sehr aufwendig , da ich ebenfalls den Zoomfaktor und die Fenster Postion ändern möchte .
Hat einer von Euch vielleicht eine gute Idee ?
Hier mal der Code:
Code: Alles auswählen
; Author:
; Date: 21. January 2003
Procedure CaptureScreen(Left.l, Top.l, handle.l,Factor)
DC.l = GetDC_(0)
MemDC.l = CreateCompatibleDC_(DC)
If handle = 0
BmpID.l = CreateCompatibleBitmap_(DC, 600, 600)
Else
BmpID.l = handle
EndIf
SelectObject_( MemDC, BmpID)
StretchBlt_( MemDC, 0, 0,600*Factor,600*Factor, DC,Left, Top, 600, 600, #SRCCOPY )
DeleteDC_( MemDC)
ReleaseDC_(0,DC)
ProcedureReturn BmpID ;same BUG if Bitmap or BmpID is used...
EndProcedure
;
If OpenWindow(0,200,200,200,200,#PB_Window_SystemMenu,"Loupe") : Else : End : EndIf
If CreateGadgetList(WindowID()) : Else : End : EndIf
;
CursorPosition.POINT
hImage = CaptureScreen( CursorPosition\x, CursorPosition\y, 0,1)
hGadget = ImageGadget(0, 0, 0, 300,300, hImage)
;
Repeat
EventID.l = WindowEvent()
Delay(10)
GetCursorPos_(CursorPosition)
hImage = CaptureScreen( CursorPosition\x, CursorPosition\y, hImage,4)
SendMessage_(hGadget, #STM_SETIMAGE, #IMAGE_BITMAP, hImage)
Until EventID=#PB_EventCloseWindow
;
EndGruss Rayman