je cherche a faire un petit programme pour les mal voyants. il s'agit d'une sorte de loupe qui affiche en plein ecran une partie de l'ecran(bureau ou autre logiciel) en suivant la souris.
Mais j'ai quelques problèmes
1-au bout de quelques secondes la copie d'ecran ne se fait pas donc ça palnte.
2-Je trouve ça tres lent si quelqu'un a une idée pour améliorer la chose.
Si j'arrive a faire ce petit programme ça permettra a pas mal de personne mal voyante d'utiliser les ordinateurs de la biblihoteque ou je travail.
Merci d'avance
voici le code que j'ai pondu:(je me suis inspiré de différent code trouvé sur le forum)
Code : Tout sélectionner
Global Mem.l
; hier werden 1024 byte speicher reserviert
Mem = AllocateMemory(1024)
Procedure.l DesktopOutput()
PokeL(Mem, 1)
ProcedureReturn Mem
EndProcedure
Global CaptureScreenWidth , CaptureScreenHeight , CaptureScreenBMPHandle
Procedure CaptureScreenPart(Left.l, Top.l, Width.l, Height.l)
dm.DEVMODE
BMPHandle.l
srcDC = CreateDC_("DISPLAY", "", "", dm)
trgDC = CreateCompatibleDC_(srcDC)
BMPHandle = CreateCompatibleBitmap_(srcDC, Width, Height)
SelectObject_( trgDC, BMPHandle)
BitBlt_( trgDC, 0, 0, Width, Height, srcDC, Left, Top, #SRCCOPY)
DeleteDC_( trgDC)
ReleaseDC_( BMPHandle, srcDC)
CaptureScreenHeight=Height
CaptureScreenWidth=Width
CaptureScreenBMPHandle=BMPHandle
ProcedureReturn BMPHandle
EndProcedure
Procedure CaptureFullScreen()
ProcedureReturn CaptureScreenPart(0,0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
EndProcedure
CaptureFullScreen()
If CaptureScreenBMPHandle
Debug CreateImage(1, CaptureScreenWidth, CaptureScreenHeight)
ZoomL=320;
ZoomH=240;
;Boucle principal
Repeat
Delay(1)
CaptureFullScreen()
StartDrawing(ImageOutput())
DrawImage(CaptureScreenBMPHandle,0,0)
StopDrawing()
x=DesktopMouseX()
y=DesktopMouseY()
If x>CaptureScreenWidth-ZoomL
x=CaptureScreenWidth-ZoomL
EndIf
If y>CaptureScreenHeight-ZoomH
y=CaptureScreenHeight-ZoomH
EndIf
GrabImage(1,2,x,y,ZoomL,ZoomH)
StartDrawing(DesktopOutput())
;DrawImage(UseImage(1), 0,0,320,200)
DrawImage(UseImage(2), 0,0,CaptureScreenWidth,CaptureScreenHeight)
StopDrawing()
If GetAsyncKeyState_(#VK_ESCAPE)
Quit = 1
EndIf
Until Quit
EndIf