Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Centrar imagen de fondo del form

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Centrar imagen de fondo del form Responder citando

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
Mensaje    Asunto: Centrar imagen Responder citando

¿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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Responder citando

¿ Alguna sugerencia ?
Volver arriba
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Centrar Responder citando

Perdona que no haya contestado nada antes, pero he estado haciendo algunas pruebas y no se me ocurre otra forma. Sigo probando y cuando lo encuentre pasaré el código.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: ¡Me rindo! Responder citando

Llevo tres o cuatro días probando modos y maneras, y no he conseguido el objetivo que busca Raúl. Sölo he logrado, como él, que me salga un mosaico. Lo siento.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Raúl: Mira el enlace que ha dejado Tugui sobre unos componentes muy inrteresantes. Puede que ahí tengas la solución, además el truco que te ha expluicado Leo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.