Artículo original: CAPTURING SCREENS WITH GDIPLUS-X
Autor: Cesar Ch.
Traducido por: Luis María Guayán
Capturar una pantalla con Gdiplus-X es una tarea muy fácil también.
Básicamente todo lo que tenemos que hacer, es llamar al método FromScreen() de la clase de Bitmap. Para facilitar esta tarea, este método brinda diferentes posibilidades.
IMPORTANTE:
Todas los ejemplos siguientes utilizan la nueva librería GDIPlus-X, que está todavía en la versión ALFA, pero es estable y confiable para hacer la mayoría de las tareas de GDI+. Descargue la última versión estable de VFPx:
https://github.com/VFPX/GDIPlusX
1 - Capturar una pantalla de un Formulario enviando el hWnd del formulario o el formulario como un objeto
_SCREEN.AddProperty("System", NEWOBJECT("xfcSystem", LOCFILE("system.vcx","vcx"))) LOCAL loCaptureBmp AS xfcBitmap WITH _Screen.System.Drawing loCaptureBmp = .Bitmap.FromScreen(Thisform.HWnd) * Could be also: * loCaptureBmp = _screen.system.Drawing.Bitmap.FromScreen(Thisform) loCaptureBmp.Save("c:\Captured.png", .Imaging.ImageFormat.Png) ENDWITH
2 - Capturar la pantalla entera
En este caso no es necesario pasar parámetros
_SCREEN.AddProperty("System", NEWOBJECT("xfcSystem", LOCFILE("system.vcx","vcx"))) LOCAL loCaptureBmp AS xfcBitmap WITH _Screen.System.Drawing loCaptureBmp = .Bitmap.FromScreen() loCaptureBmp.Save("c:\CapturedScreen.png", .Imaging.ImageFormat.Png) ENDWITH
3 - Capturar la pantalla de un formulario recortando sus bordes y título.
Para esta tarea utilizamos la función SYSMETRIC() para obtener la medida de los elementos de la pantalla, tales como la altura del título, borde superior e izquierdo. Entonces utilizamos otra posibilidad, enviando el hWnd, y las coordenadas del formulario que será capturado.
_SCREEN.AddProperty("System", NEWOBJECT("xfcSystem", LOCFILE("system.vcx","vcx"))) LOCAL lnTitleHeight, lnLeftBorder, lnTopBorder lnTitleHeight = SYSMETRIC(9) lnLeftBorder = SYSMETRIC(3) lnTopBorder = SYSMETRIC(4) LOCAL loCaptureBmp AS xfcBitmap WITH _Screen.System.Drawing loCaptureBmp = .Bitmap.FromScreen(; Thisform.HWnd, ; lnLeftBorder, ; lnTitleHeight + lnTopBorder, ; Thisform.Width, ; Thisform.Height) loCaptureBmp.Save("c:\Captured.png", .Imaging.ImageFormat.Png) ENDWITH
4 - Capturar todos los formularios de la pantalla
Esto también es muy fácil. Sólo cree un ciclo por todas los formularios de _Screen, y capture cada uno de ellos enviando el Form.hWnd como parámetro.
_SCREEN.AddProperty("System", NEWOBJECT("xfcSystem", LOCFILE("system.vcx","vcx"))) LOCAL loCaptureBmp AS xfcBitmap LOCAL n LOCAL loForm AS Form n = 1 WITH _Screen.System.Drawing FOR EACH loForm IN _Screen.Forms loCaptureBmp = .Bitmap.FromScreen(loForm.HWnd) loCaptureBmp.Save("c:\CapturedForm" + TRANSFORM(n) + ".png", .Imaging.ImageFormat.Png) n = n + 1 ENDFOR ENDWITH
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.