PDA

Ver la Versión Completa : Longitud de un String en pixeles


andre
15-05-2003, 14:14:47
Hola,

¿Se puede obtener la longitud de una cadena en pixeles? y si es posible, ¿como?

Saludos.

andres1569
15-05-2003, 14:57:42
Hola:

Esta pregunta pertenece más bien al foro de gráficos.

El método TextWidth (cadena) del TCanvas devuelve la longitud en píxeles de dicha cadena. Ten en cuenta que debes disponer de un Canvas para usarla (está claro), no hay una función general para esto, puesto que depende del tipo de fuente, tamaño y estilo que haya asignada al Canvas y de otras características del mismo.

Lo normal es que lo apliques sobre el Canvas sobre el que quieres dibujar, si no, puedes crear un objeto que disponga de Canvas (un Bitmap, on un THintWindow), asignarle la fuente deseada y llamar al método.

También puedes llamar a alguna función del API, como GetTextExtentPoint, a la que debes pasar el Handle del control.

Un saludo

marcoszorrilla
15-05-2003, 15:03:18
procedure TForm1.Button1Click(Sender: TObject);
var
nAncho:Integer;
s:String;
begin
s:='Ejemplo de ancho';
form1.Canvas.Font.size:=20;
with form1.Canvas do
begin
nAncho:=TextWidth(s);
ShowMessage(IntToStr(nAncho));
end;

end;



Un Saludo.

andre
15-05-2003, 15:45:11
Muchas gracias amigos por la solucion que me proveyeron. Fue justo lo que necesitaba. Mis disculpas por no poner en el foro de graficos.

Saludos.

ScarCom
09-06-2006, 01:11:26
Otra manera, menos ortodoxa, es declarando primero en los canvas el tipo de fuenta que vas a utilizar y luego calculando por la longitud de la cadena y el tamaño de la fuente.


var pixel:integer;
begin

obj.canvas.font.type:=xxxx;
obj.canvas.font.size:=yyyy;

pixel:=(length(cadena) *yyyy);

end;

vtdeleon
09-06-2006, 02:36:39
ScarCom, No te has dado cuenta de la antiguedad de este hilo?:D:D

Saludos