La mesure de texte dans WPF
L'utilisation de WPF, quel est le moyen le plus efficace pour mesurer un grand nombre de chaînes courtes? Plus précisément, je voudrais déterminer la hauteur d'affichage de chaque chaîne, étant donné uniforme de mise en forme (police, taille, poids, etc.) et la largeur maximale de la chaîne peut occuper?
- Même question sur les forums MSDN ai quelques solutions: social.msdn.microsoft.com/Forums/en-US/wpf/thread/...
Vous devez vous connecter pour publier un commentaire.
Le plus faible niveau technique (et donc de donner le maximum de possibilités pour la créativité des optimisations) est d'utiliser GlyphRuns.
Ce n'est pas très bien documenté, mais j'ai écrit un petit exemple ici:
http://smellegantcode.wordpress.com/2008/07/03/glyphrun-and-so-forth/
L'exemple fonctionne la longueur de la chaîne comme une étape nécessaire avant de le rendre.
Il est très simple et se fait en FormattedText classe!
L'essayer.
En WPF:
N'oubliez pas d'appeler la Mesure (la) sur le TextBlock avant de lire le DesiredSize propriété.
Si le TextBlock a été créé à la volée, et n'est pas encore affiché, vous devez appeler la Mesure() tout d'abord, comme suit:
Dans Silverlight:
Pas besoin de mesurer.
Le code ressemble à ceci:
Vous pouvez utiliser le DesiredSize de propriété sur une zone de texte pour obtenir la hauteur et la largeur
Si vous avez un grand nombre de chaînes qu'il peut être plus rapide de la première pré-calualte la hauteur et la largeur de chaque indiviudal lettre et le symbole dans une police donnée, et ensuite faire un calcul basé sur la chaîne de caractères. Cela peut ne pas être 100% précis en raison de crénage etc