 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Lupo Ens

Registrado: 15 Ago 2005Mensajes: 30Ubicación: Prov, Buenos Aires - Argentina
|
Publicado: Mie 17 Ago, 2005 8:09 pm Asunto: Texto centrado con TextOutA |
|
|
Buenas a todos !!!!
Mi pregunta es la siguiente, como puedo saber el ancho, en pixeles, que va a tener una cadena de texto x, al ser impresa en pantalla mediante la funcion TextOut del objeto Canvas ??
Teniendo en cuenta que eh seteado el Font del Canvas a tipo de letra "Arial", tamaño 22, etc...
Saludos a todos, espero me respondan, y desde ya muchisimas Gracias !! _________________ Il Lupo |
|
| Volver arriba |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Jue 18 Ago, 2005 12:54 pm Asunto: |
|
|
Lo mismo esto te sirve:
| Código: | //---------------------------------------------------------------------------
// imprime el texto alineándolo al centro, es decir X será el centro desde
// el que se quiere centrar
//---------------------------------------------------------------------------
void __fastcall Centro(TCanvas *Destino,int x,int y,AnsiString literal)
{
//textout imprime siempre a la derecha por lo que habra que empezar buscando
//donde se comenzará a imprimir
//A partir de la longitud total del texto el inicio de la impresion sera
//a (la mitad de la longitud) - x
x -= (Destino->TextWidth(literal)/2);
Destino->TextOut(x,y,literal);
}
//---------------------------------------------------------------------------
// Derecha imprime el texto justificandolo a la derecha (tipico numeros)
//---------------------------------------------------------------------------
void __fastcall Derecha(TCanvas *Destino,int x,int y,AnsiString literal)
{
//textout imprime siempre hacia la derecha de manera que hay que empezar
//restandole a la X el espacio del ultimo caracter para que empiece donde debe
x -= (Destino->TextWidth(literal.SubString((literal.Length()),1)));
for(int caracter=0;caracter < literal.Length();caracter++)
{
//se imprimen los caracters de atras hacia adelante
Destino->TextOut(x,y,literal.SubString((literal.Length()-caracter),1));
//se posiciona la X restandole el tamaño del siguiente caracter
x -= (Destino->TextWidth(literal.SubString((literal.Length()-caracter)-1,1)));
}
} |
Los comentarios están un poco de aquella manera, pero espero que se entiendan lo suficiente... (un cursillo de mecanografía ya me vendría bien, ya).
Suerte!! |
|
| Volver arriba |
|
 |
Lupo Ens

Registrado: 15 Ago 2005Mensajes: 30Ubicación: Prov, Buenos Aires - Argentina
|
Publicado: Jue 18 Ago, 2005 2:15 pm Asunto: |
|
|
Mil gracias laremi400 !!! me anduvieron de 10 estas dos funciones que me pasaste, te agradezco mucho la ayuda !!!
Salu2 _________________ Il Lupo |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|