void TForm1::SaveControlImage(TWinControl *Control, AnsiString FileName){
//Creamos el componente Bitmap HDC DC; //Para manejar el Handle
Graphics::TBitmap *BitmpPrueba = new Graphics::TBitmap(); //Bitmap := TBitmap.Create;
try{
BitmpPrueba->Width = Control->Width;
BitmpPrueba->Height = Control->Height;
DC = GetWindowDC(Control->Handle); //ASi muestra toda la ventana
BitBlt(BitmpPrueba->Canvas->Handle, 0, 0, Control->Width, Control->Height, DC, 0, 0, SRCCOPY);
ReleaseDC(Control->Handle, DC); //para que devuelva el control al programa
BitmpPrueba->SaveToFile(FileName);
}
__finally{
delete BitmpPrueba;
}
}
Como pueden ver es practicamente igual a como se haría en Delphi.Con este código pueden obtener la imagen de cualquier ventana, ó control que se le pase como parámetro. Muy útil a la hora de imprimir el texto de un RichEdit, creanme. (Gracias roman )
Weps84 gracias por la sugerencia, probé varias cosas similares y no funcionó.
1 Saludo!