PDA

Ver la Versión Completa : Screenshot de un TPanel


hgiacobone
26-10-2010, 20:29:00
Hola amigos,
He visto muchos ejemplos de cómo hacer una captura del Desktop, de la Ventana actual e incluso del Form actual y almacenarlo luego en un archivo BMP tal cual un screenshot ordinario, pero la cosa es que yo necesito capturar solamente lo que se encuentra contenido en un TPanel especifico dentro de mi Form activo, que de por sí, tienen varios TPanel.
¿Es posible capturar solamente el contenido de un TPanel determinado?

Saludos,

delphi.com.ar
26-10-2010, 20:43:03
var
DC : HDC;
bmp: TBitmap;
begin
dc := GetWindowDC(Panel1.Handle);
bmp := TBitmap.Create;
try
bmp.Width := Panel1.Width;
bmp.Height := Panel1.Height;
BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, DC, 0, 0, SRCCOPY);
bmp.SaveToFile('c:\temp.bmp');
finally
bmp.Free;
ReleaseDC(Panel1.Handle, DC);
end;
end;


Saludos!

javier7ar
26-10-2010, 23:33:44
Tambien podes usar la funcion PaintTo que tienen todos los TWinControl. Si te fijas en la ayuda de PaintTo explica incluso como pintar el control directamente sobre la impresora para imprimirlo.


var
bmp: TBitmap;
begin
bmp := TBitmap.Create;
try
bmp.Width := Panel1.Width;
bmp.Height := Panel1.Height;
Panel1.PaintTo(bmp.Canvas.Handle,0,0);
bmp.SaveToFile('c:\temp.bmp');
finally
bmp.Free;
end;
end;


Saludos

hgiacobone
28-10-2010, 20:53:54
Gracias muchachos por sus amables respuestas.