Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Convertir un form junto con sus controles en una imagen

Trucos y Consejos con respecto al Lenguaje C++ Builder.

Moderador: yalmar

Convertir un form junto con sus controles en una imagen

Notapor Pernorak el Lun May 28, 2007 6:05 am

Hola me preguntaba si es posible convertir una form junto con sus controles TLabel, TEdit, ... etc.. en una imagen, de manera que en esa imagen tengamos la "foto" de la Form.

¿Se puede generalizar para cualquier control? Es decir, se puede tener la imagen (Bitmap ó similar) de un control cualquiera.

1 Saludo
No duden en plantear sus dudas, si puedo ayudar lo haré encantado.
Avatar de Usuario
Pernorak
Novato
Novato
 
Mensajes: 15
Registrado: Vie May 25, 2007 11:40 am

Notapor Pernorak el Mar May 29, 2007 12:48 pm

:) Ya lo he conseguido. Aqui dejo el código que permite obtener una imagen de una form y pegarla en otra form dentro de un control TImage:



void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Obtenemos la imagen de la Form1
Graphics::TBitmap *BitmpPrueba = Form1->GetFormImage();


//Pegamos el Bitmap en una nueva form a través del Clipboard
Clipboard()->Assign(BitmpPrueba);
Form2->ImgForm1->Picture->Assign(Clipboard());
//La mostramos
Form2->Show();


delete BitmpPrueba;
}



Todo esto lo hace al pulsar un botón que hay en la Form1, en la Form2 he colocado un TImage que ocupa todo el área de la Form, cuando pulsas el botón en la Form1, aparece la Form2 igual, en apariencia que la Form1, pero sus controles no se pueden usar, ya que son una foto.



:cry: De todas maneras sigue sin servirme para imprimir mi Expediente, porque misteriosamente, el texto d los RichEdit no aparece, si el del resto de controles... a pesar de que se supone que es una captura de la imagen de la form.
No duden en plantear sus dudas, si puedo ayudar lo haré encantado.
Avatar de Usuario
Pernorak
Novato
Novato
 
Mensajes: 15
Registrado: Vie May 25, 2007 11:40 am

Notapor Pernorak el Mié May 30, 2007 6:38 am

Bien, ahora si lo he conseguido :) , con esta función se guardaría una imagen de la Form en un archivo.bmp. NO es preciso guardarla en fichero, si lo deseas puedes manejar dicho Bitmap, aunque debes recordar en liberar el Bitmap (delete) sólo cuando hayas acabado de usarlo. Aqui tenéis el código. 1 Saludo. :wink:

void TForm1::SaveControlImage(TWinControl *Control, AnsiString FileName){

HDC DC; //Para manejar el Handle
Graphics::TBitmap *BitmpPrueba = new Graphics::TBitma();
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;
}
}
No duden en plantear sus dudas, si puedo ayudar lo haré encantado.
Avatar de Usuario
Pernorak
Novato
Novato
 
Mensajes: 15
Registrado: Vie May 25, 2007 11:40 am


Volver a C++ Builder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados