| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Raul128 Invitado
|
Publicado: Dom 29 Jun, 2003 10:53 pm Asunto: Centrar imagen de fondo del form |
|
|
Hola Colegas,
Tengo un pequeño problema.
He intentado colocar una imagen de fondo en un form agregando el siguiente código en el constructor del form:
| Código: |
__fastcall TfrmPrincipal::TfrmPrincipal(TComponent* Owner)
: TForm(Owner)
{
Brush->Bitmap = Image1->Picture->Bitmap;
}
|
El problema es que la imagen me la presenta en forma de mosaico y lo que deseo es que solo se dibuje una sola vez.
Entonces intente esto y funciono:
| Código: |
__fastcall TfrmPrincipal::TfrmPrincipal(TComponent* Owner)
: TForm(Owner)
{
Brush->Bitmap = Image1->Picture->Bitmap;
Brush->Bitmap->Width = Screen->Width;
Brush->Bitmap->Height = Screen->Height;
}
|
Solo que ahora ncesito centrar la imagen ya que solo la dibuja a la izquierda del form.
Por su atención, gracias.
Saludos, Raúl |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 30 Jun, 2003 1:18 pm Asunto: Centrar imagen |
|
|
¿Por qué no pruebas a modificar las porpiedas Left y Top? No sé si funcionará bien con el elemento que usas pero podría quedar así:
| Código: | Brush->Bitmap->Left=(Screen->Width - Brush->Bitmap->Width)/2;
Brush->Bitmap->Top=(Screen->Height - Brush->Bitmap->Height)/2; |
Con un código parecido yo centro los formularios en la pantalla. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Raul128 Invitado
|
Publicado: Mar 01 Jul, 2003 1:08 am Asunto: |
|
|
Que tal Angel,
Gracias por tu respuesta pero, lamentablemente no me reconoce las propiedades Left y Top en el constructor del Form.
Si tienes otra idea o alguien tiene otra sugerencia será bienvenida.
Saludos, Raúl |
|
| Volver arriba |
|
 |
Raul128 Invitado
|
Publicado: Jue 03 Jul, 2003 2:53 am Asunto: |
|
|
| ¿ Alguna sugerencia ? |
|
| Volver arriba |
|
 |
Raul128 Invitado
|
Publicado: Vie 04 Jul, 2003 12:37 am Asunto: |
|
|
Parece ser que no tendré suerte esta vez.
Pero si por ahi alguien conoce la forma de hacerlo se lo agradeceré bastante.
Saludos, Raúl |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 08 Jul, 2003 8:17 am Asunto: |
|
|
No me parece la mejor opción para poner una imagen centrada de fondo, pero bueno, aquí va como centrarla usando Brush...
- Lo probamos en un proyecto nuevo, al que añadiremos un TImage (Image1) con la propiedad Visible a false y en el cargamos la imagen que queremos que aparezca centrada en el Form.
- Añadimos: #include<memory> antes del #include<Unit1.h>
- La siguiente declaración en la parte privada de la clase de nuestro form:
private: // User declarations
std::auto_ptr<Graphics::TBitmap> bmp;
- Modificamos el constructor para que quede del siguiente modo:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner), bmp(new Graphics::TBitmap)
{
}
- Y por ultimo en el evento OnResize del form el siguiente código:
void __fastcall TForm1::FormResize(TObject *Sender)
{
bmp->Width = ClientWidth;
bmp->Height = ClientHeight;
bmp->Canvas->Brush->Color = Color;
bmp->Canvas->FillRect(ClientRect);
int centroX = (ClientWidth - Image1->Picture->Bitmap->Width) / 2;
int centroY = (ClientHeight - Image1->Picture->Bitmap->Height) / 2;
bmp->Canvas->Draw(centroX, centroY, Image1->Picture->Bitmap);
Brush->Bitmap = 0;
Invalidate();
Brush->Bitmap = bmp.get();
}
(Lo he probado en el BCB1, BCB4 y BCB6)
Me parece mejor opción usar el evento OnPaint/WM_PAINT o WM_ERASEBKGND... |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
|