Mesurer la longueur en pixels d'une chaine de caractères

Signaler
Messages postés
4
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
19 mai 2010
-
Messages postés
17
Date d'inscription
samedi 10 avril 2004
Statut
Membre
Dernière intervention
17 juin 2010
-
Bonjour à tous,

Quelqu'un connaitrait-il un moyen pour calculer la longueur en pixels, d'une chaine de caractères afin de pouvoir la faire afficher dans un label (ou un HyperLink), qui lui a une taille déterminée.
Si la chaine est plus longue que la largeur du label (ou de l'HyperLink), alors je souhaiterais couper la chaine et y ajouter 3 points à la fin.

J'ai bien trouvé la méthode "MeasureText" mais apparemment ce serait pour des WindowsForms et non pour des Webforms.

Merci pour votre aide.

3 réponses

Messages postés
17
Date d'inscription
samedi 10 avril 2004
Statut
Membre
Dernière intervention
17 juin 2010

Je n'ai pas de réponse en pure code mais si tu spécifie la taille de ton texte en px dans ton css et en prenant le nombre de caractere de ton string tout en le multipliant par la mesure en px du css tu obtiendra ce que tu veux.

Css:
body
{
font-size: 12px;
}

code:
String text = "abcd";
int tailleEnPixel = text.length * 12; //la font-size

Voila
Messages postés
4
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
19 mai 2010

Merci pour ta réponse, mais cette méthode ne peut fonctionner étant donné que la taille en largeur de chaque caractère varie, sans compter les paramètres supplémentaires : type de la police de caractère, son style (bold, italic, normal...) etc...
J'ai pour le moment simplement utilisé un style : "Text-overflow:ellipsis", malheureusement ça fonctionne sur tous les navigateurs, sauf sous FF :o(

Merci encore de ton aide.
Messages postés
17
Date d'inscription
samedi 10 avril 2004
Statut
Membre
Dernière intervention
17 juin 2010

Voila un indice:

http://stackoverflow.com/questions/451903/how-can-i-convert-a-string-length-to-a-pixel-unit

La partie interessante:

using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
{
SizeF size = graphics.MeasureString("Hello there", new Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point));
}