2009-10-01 5 views
4

Ceci est l'inverse de Determine Label Size based upon amount of text and font size in Winforms/C#.Déterminer la plus grande police pour une hauteur de rectangle donnée (WinForms)

Étant donné un rectangle de hauteur fixe mais de largeur variable, existe-t-il un moyen efficace de déterminer la taille la plus grande d'une police donnée (hauteur) sans risque de perdre ascendants/descendants?

Je considère actuellement l'utilisation itérative de MeasureString() pour trouver la meilleure taille de police mais je me demande s'il y a une meilleure façon.

Répondre

2

Je n'ai jamais trouvé une meilleure façon de le faire que d'utiliser itérativement MeasureString. Vous pouvez optimiser en sautant par incréments. WPF propose de plus belles options de dimensionnement du texte, bien que cela ressemble à du frottement de sel dans la plaie.

+1

Je suis allé avec cela et cela fonctionne assez bien. Oui, dommage que le public cible soit très lent à mettre à jour les versions .NET ... –

2

Vous n'avez pas vraiment besoin d'itérations. Puisque la largeur totale est également proportionnelle à la taille de la police, il suffit de mesurer la chaîne une fois avec toute police de taille raisonnable. Ensuite, vous pouvez calculer votre taille de police requise:

fontSizeUsedToMeasure*(RectangleWidth/MeasuredWidth)(*0.8 for a nicer fit) 
Questions connexes