• Viernes 8 de Noviembre de 2024, 21:39

Autor Tema:  Ayuda Para Completar Código. Uso De Bitmap  (Leído 1386 veces)

Pernorak

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Ayuda Para Completar Código. Uso De Bitmap
« en: Martes 29 de Mayo de 2007, 14:05 »
0
Hola tengo el siguiente código que lo que hace es:
1º) copiar la imagen de la ficha Form1 en un componente Bitmap y
2º) pega dicha imagen en la ficha Form2

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Creamos el componente Bitmap
Graphics::TBitmap *BitmpPrueba = new Graphics::TBitma();  
//Copiamos la imagen de la Form en un Bitmap
CopyControlImage(Form1, BitmpPrueba); //Tb se podría poner Screen->ActiveForm
//Dibujamos el Bitmap en una nueva form
Form2->Canvas->Draw(0,0,BitmpPrueba);
//La mostramos
Form2->Show();

delete BitmpPrueba;
}

- Aqui está el código del Procedimiento que copia la imagen de la Form1 a un Bitmap:

//DESCRIPICION: Se pretende capturar en un BitMap un control cualquiera que se le pasa como parámetro.
void TForm1::CopyControlImage(TWinControl *Control,Graphics::TBitmap * BitmpPrueba){
HDC DC; //Pasar de Delphi a Builder C++ --> esto para que sirve???
//Ajustamos las dimensiones del bitmap BitmpPrueba a las del Control
BitmpPrueba->Width = Control->Width;
BitmpPrueba->Height = Control->Height;
//Copia de la imagen de la Form en el control Bitmap BitmpPrueba
//--------------------------------------------------------------------
Pasar de Delphi a Builder C++ estas instrucciones
DC.GetWindowDC(Control->Handle);
BitBlt(BitmpPrueba->Canvas->Handle, 0, 0, Control->Width, Control->Height, DC, 0, 0, SRCCOPY);
ReleaseDC(Control->Handle, DC);

//--------------------------------------------------------------------
}

- Lo que no sé es como realizar la copia de la imagen de la Form1 al Bitmap, este código al parecer lo puede hacer, pero está en Delphi. Si alguien sabe un equivalente a este código para Builder C++ le estaría muy agradecido.
1 Saludo.  :hola:

weps84

  • Miembro MUY activo
  • ***
  • Mensajes: 138
    • Ver Perfil
Re: Ayuda Para Completar Código. Uso De Bitmap
« Respuesta #1 en: Martes 29 de Mayo de 2007, 16:36 »
0
Si no me equivoco el objeto Tbitmap tiene un canvas, por que no intentas asignar el canvas de la forma al canvas del bitmap para ver que sucede

Pernorak

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Ayuda Para Completar Código. Uso De Bitmap
« Respuesta #2 en: Miércoles 30 de Mayo de 2007, 14:09 »
0
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!  :hola:

weps84

  • Miembro MUY activo
  • ***
  • Mensajes: 138
    • Ver Perfil
Re: Ayuda Para Completar Código. Uso De Bitmap
« Respuesta #3 en: Miércoles 30 de Mayo de 2007, 23:34 »
0
ok espero haberle servido de ayuda