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 

Poner imagen al fondo de un boton

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Poner imagen al fondo de un boton Responder citando

Hola a todos,

Después de mirar y remirar por el foro no encuentro lo que busco, a ver si me podéis echar una mano.

La idea es tener un botón y ponerle una imagen de fondo como si fuera su propio fondo, me explico, cuando pones una imagen a un botón y quieres escribir en el caption el problema que tenemos es que la imagen se queda abajo o a la derecha o donde sea, lo que yo quiero es tener la imagen de fondo y poder escribir con el caption donde normalmente se pondría cuando no tiene imagen, osea en el centro del botón y con la imagen de fondo.

Estuve viendo un mensaje aquí para hacerlo a un Form y funciona bien, pero lo he intentado de todas maneras a un botón y no hay forma, también he probado con las LMD pero no hay nada así.

Se os ocurre como?

Un abrazo.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Solo se me ocurre que escribas en la propia imagen, yo hace mucho tiempo en un problema similar utilicé el componente TPaintBox para simular un boton con imagen.

Saludos,
Juanma
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Escribir en la propia imagen???

Como se haría? seria una opción interesante la verdad.

Un abrazo.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Una función sencilla para dibujar texto centrado puede ser esta:

Código:

DrawText(TCanvas* Canvas, String Text, int W, int H)
{
   int x = (W - Canvas->TextWidth(Text))/2;
   int y = (H - Canvas->TextHeight(Text))/2;
   Canvas->Brush->Style = bsClear;
   Canvas->TextOut(x, y, Text);
}


Ejemplo de uso en un botón TBitBtn:

Código:

   DrawText(BitBtn1->Glyph->Canvas, "BOTON1", BitBtn1->Glyph->Width, BitBtn1->Glyph->Height);


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias,

Voy a probarlo ahora mismo a ver que tal me sale.

Un abrazo.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Escafandra,

Lo tengo casi casi, lo único que me haría falta es justamente lo mismo pero con un TImage, se te ocurre como? estaba probando lo que me has puesto con el TImage pero me da error y no sale.

Es que seria estupendo por que podría poner una imagen normal y corriente y simplemente escribir encima.

También sabrías como poner la fuente, tamaño y color que quisiera al texto?

Un abrazo y muchas gracias.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

En el siguiente ejemplo te muestro como hacerlo con un TImage. Para que funcione el TImage debe tener asignada una Imagen en su Bitmap

Código:

DrawText(TImage* Image, String Text, TFont* Font=0)
{
   Graphics::TBitmap* Bitmap = Image->Picture->Bitmap;
   int x = (Bitmap->Width - Bitmap->Canvas->TextWidth(Text))/2;
   int y = (Bitmap->Height - Bitmap->Canvas->TextHeight(Text))/2;
   Bitmap->Canvas->Brush->Style = bsClear;
   if(Font) Bitmap->Canvas->Font->Assign(Font);
   Bitmap->Canvas->TextOut(x, y, Text);
}


Ejemplo de uso:
Código:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   DrawText(Image1, "HOLA", Button1->Font);
}



Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Jo que rapido tio,

Muchas gracias, me pongo con ello.

Un abrazo y te debo una.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Me va todo perfecto,

Ahora tengo un problemilla mas, resulta que también pongo imágenes en un TPageControl en cada uno de sus TTabSheet a través de una lista de TImageList

Como podría hacerlo? se te ocurre una forma directa de escribir sobre la imagen que se ha puesto encima del TabSheet o directamente en el TImageLis o alguna otra format?

Le estoy dando vueltas pero no encuentro la forma.

Un abrazo.

Carlos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Tendrás que decidir donde realizas la escritura del texto, donde mas convenga, en el TImageList si las imagenes con texto las reutilizas. En cambio si deseas guardar la original no lo modifiques.

Puedes modificar el código para trabajar con un Bitmap:

Código:

DrawText(Graphics::TBitmap* Bitmap, String Text, TFont* Font=0)
{
   int x = (Bitmap->Width - Bitmap->Canvas->TextWidth(Text))/2;
   int y = (Bitmap->Height - Bitmap->Canvas->TextHeight(Text))/2;
   Bitmap->Canvas->Brush->Style = bsClear;
   if(Font) Bitmap->Canvas->Font->Assign(Font);
   Bitmap->Canvas->TextOut(x, y, Text);
}


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Al final he metido el texto en el tImageList

Nos las reutilizo con lo que me viene bien asi.

Muchas gracias por todo, me has ayudado mucho.

Un abrazo,

Carlos
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.