| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Dom 20 Dic, 2015 10:42 am Asunto: SpeedButton y el canvas |
|
|
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 |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Lun 21 Dic, 2015 3:40 pm Asunto: |
|
|
| 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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Lun 21 Dic, 2015 8:52 pm Asunto: |
|
|
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 |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Lun 21 Dic, 2015 11:20 pm Asunto: |
|
|
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 |
|
 |
|