Save WebGadget contents as image?
Posted: Thu Mar 17, 2005 11:51 pm
Is there a way to save whatever is displayed in the WebGadget as an image?
http://www.purebasic.com
https://www.purebasic.fr/english/
Only a screenshot of the webgadget.PB wrote:Is there a way to save whatever is displayed in the WebGadget as an image?
Code: Select all
UseJPEGImageEncoder()
Global xX, yY
xX = GetSystemMetrics_(#SM_CXSCREEN) : yY = GetSystemMetrics_(#SM_CYSCREEN)
Procedure.l CaptureScreen(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)
ProcedureReturn BMPHandle
EndProcedure
Procedure CreaImagen()
DeleteFile("Screenshot.jpeg")
ScreenCaptureAddress = CaptureScreen(20,40,xX-50,yY-150)
CreateImage(0, xX, yY)
StartDrawing(ImageOutput())
DrawImage(ScreenCaptureAddress, 0, 0)
StopDrawing()
SaveImage(0, "Screenshot.jpeg",#PB_ImagePlugin_JPEG,10)
Beep_(1999,100)
ProcedureReturn 1
EndProcedure
If OpenWindow(0,0,0,xX,yY,#PB_Window_SystemMenu,"Test")
CreateGadgetList(WindowID())
ButtonGadget(2,(xX/2),yY-90,150,25,"Take Picture")
WebGadget(3,10,10,xX-50,yY-150,"http://www.google.com")
Repeat
EventID=WaitWindowEvent()
Select EventID
Case #PB_EventGadget
Select EventGadgetID()
Case 2
CreaImagen()
EndSelect
EndSelect
Until EventID=#PB_EventCloseWindow
EndIf
Code: Select all
Procedure SavePicture()
UsePNGImageEncoder()
DeleteFile("c:\Screenshot.png")
windowhandle=WindowID(0)
GetClientRect_(windowhandle, @cr.RECT)
CreateImage(0, cr\right-cr\left, cr\bottom-cr\top, 24)
hdc=StartDrawing(ImageOutput(0))
SendMessage_(windowhandle, #WM_PRINT, hdc, #PRF_CLIENT|#PRF_CHILDREN|#PRF_ERASEBKGND|#PRF_CHECKVISIBLE )
StopDrawing()
Debug SaveImage(0, "c:\Screenshot.png",#PB_ImagePlugin_PNG)
EndProcedure
If OpenWindow(0,0,0,800,500,"X",#PB_Window_SizeGadget | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget |#PB_Window_MaximizeGadget | #PB_Window_ScreenCentered)
WebGadget(1, 0, 0, 800, 500, "http://www.purebasic.com",#PB_Web_Mozilla )
saveflag=0
Repeat
Event = WaitWindowEvent(100)
If saveflag=1
Debug "wait..."
If GetGadgetAttribute(1,#PB_Web_Busy)=0
Delay(10)
Debug "Save now!"
saveflag=2
Repeat
WindowEvent()
Until WaitWindowEvent(0)=0
SavePicture()
EndIf
EndIf
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_Event_DataReceived
;Debug "Data"
Case #PB_EventType_DownloadEnd
If saveflag=0
saveflag=1
EndIf
;Debug "Download"
Case #PB_EventType_StatusChange
;Debug "Changes"
EndSelect
EndSelect
EndSelect
Until Event=#PB_Event_CloseWindow
EndIf
Code: Select all
Procedure SavePicture()
UsePNGImageEncoder()
DeleteFile("c:\Screenshot.png")
windowhandle=GadgetID(1)
GetClientRect_(windowhandle, @cr.RECT)
CreateImage(0, cr\right-cr\left, cr\bottom-cr\top, 24)
hdc=StartDrawing(ImageOutput(0))
SendMessage_(windowhandle, #WM_PRINT, hdc, #PRF_CLIENT|#PRF_CHILDREN|#PRF_ERASEBKGND)
StopDrawing()
Debug SaveImage(0, "c:\Screenshot.png",#PB_ImagePlugin_PNG)
EndProcedure