cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
2 mars 2005 à 22:47
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
24 oct. 2009 à 09:03
Je cherche à savoir pourquoi le label2 et le label3 n'affiche pas la même chose dans le petit morceau de code suivant :
Graphics g = label1.CreateGraphics();
string[] words = label1.Text.Split(
new
char[] { ' ' } );
float tot = 0F;
foreach(
string word
in words) tot += g.MeasureString(word, label1.Font).Width;
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 3 mars 2005 à 09:15
Bon, après un bon moment de recherche, j'ai trouvé la solution à mon problème.
Je trouve ce résultat très bizarre, alors si de bonne âme voudront bien m'expliquer plus en détails, je suis preneur.
Voici ce qui j'ai trouvé :
En fait, quand on fait un MeasureString, la longeur du mot est en fait la longueur du mot plus un espace (je ne sais pas pourquoi!).
Donc forcément, si je calcul la longeur du mot "SalutToutLeMonde" ou bien si j'aditionne les longeurs de "Salut" et "Tout" et "Le" et "Monde" et bien j'obtiens pas le même résutat, puisque dans le second cas, j'aurai compter plus de fois l'espace.
Combien de fois plus? Dans l'exemple ci-dessus, j'ai un espace pour "SalutToutLeMonde" et et quatre espace dans l'autre cas, car il y a quatre mot. J'ai trois espaces de trop, ou encore le nombre de mot - 1.
Si je veux corriger mon code pour qu'il marche, je dois donc faire qqch dans ce genre :
Graphics g = label1.CreateGraphics();
float tot = 0F;
float spaceW = g.MeasureString(" ", this.Font).Width; // Longeur d'un espace
string[] words = label1.Text.Split(new char[] { ' ' });
foreach(string word in words) tot += g.MeasureString(word, label1.Font).Width;
tot -= spaceW * (words.Length - 1); // On soustrait les espaces superflus
soussous78
Messages postés47Date d'inscriptionmardi 21 novembre 2006StatutMembreDernière intervention 5 novembre 2016 24 oct. 2009 à 00:56
Bonjour,
J'ai exactement le même problème mais le lien ne fonctionne pas.
Pour ma part je crée un style de TextBox spécial et je voudrai juste ajouter le | en fin de ligne mais
1- plus j'écris plus il s'éloigne (le rendu de width est trop grand)
2- lorsque je fais un espace, il ne le prend pas en compte.
3- lorsque je colle le texte a droite de la box, j'ai un espace (toujours a cause du rendu de width)
Si quelqu'un a la réponse là dessus, je suis entièrement preneur.
Merci,
Vous n’avez pas trouvé la réponse que vous recherchez ?