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 

SpeedButton y el canvas

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: SpeedButton y el canvas Responder citando

Hola a todos
Necesito escribir vía canvas sobre un speedbutton al que le he asignado un bitmap. El código que uso es:
Código:
speed->Glyph->Canvas->Font->Size=15;
speed->Glyph->Canvas->Brush->Style = bsDiagCross;
speed->Glyph->Canvas->Font->Name="Arial";
speed->Glyph->Canvas->Brush->Color=clWhite;
speed->Glyph->Canvas->TextOutA(0,0,"20");

He probado varios Style (bsSolid, bsClear, bsCross, bsDiagCross) y algunos "borran" el bitmap de debajo y en otros simplemente no aparece lo escrito

¿Alguien sabe la forma correcta?
Por cierto, no me vale el caption porque quiero que aparezca el número de tareas centrado (en el ej. 20)

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

Código:
void TForm1::Rendering(AnsiString ImagePath, AnsiString caption, TSpeedButton *speed)
{
        if(!ImagePath.IsEmpty())
          speed->Glyph->LoadFromFile(ImagePath);

        TPoint pt;
        TRect rect;
        rect.Left = 0;
        rect.Right = speed->Glyph->Width;
        rect.Top = 0;
        rect.Bottom = speed->Glyph->Height;
        pt = CenterPoint(rect);

        speed->Glyph->Canvas->Brush->Style = bsClear;
        speed->Glyph->Canvas->Font->Name="Arial";
        speed->Glyph->Canvas->Font->Size=30;


        int w = speed->Glyph->Canvas->TextWidth(caption)/2;
        int h = speed->Glyph->Canvas->TextHeight(caption)/2;
        speed->Glyph->Canvas->TextOut(pt.x -  w, pt.y - h, caption);
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias por tu código y gran ayuda Felip
Mas o menos era lo que estaba haciendo, pero algo falla y tiene que ser el bmp, puesto que si le pongo otro (mayor, mucho mayor que el speed) tu código funciona correcto, pero si le asigno un bmp ajustado vuelve a pasar lo mismo, o borra el bmp de debajo de las letras o simplemente se ven unos pixels que intentan ser el texto

Sigo investigando que puede ser

Muchas gracias por tu gran ayuda.
Saludos

PD: no pongo imágenes porque el speedbutton es pequeño. Reproduzco el fallo con un speed de mayor tamaño y las subo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Solucionado
Pues tenía yo razón: era el bmp y los pixeles de transparencias.
Ha sido cambiar el color de los pixeles de las esquinas y funcionar todo correcto

Gracias por vuestra ayuda, y sobre todo a Felip

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.