2010-05-14 8 views
0

Je travaille sur un contrôle personnalisé où j'utilise Rectangle pour afficher certaines données. Maintenant, disons que la largeur et la hauteur du rectangle est fixée à 100.Redimensionner Rectangle basé sur le texte

Si j'ai moins de données, alors c'est bien, je peux le faire dessiner en utilisant la méthode DrawString. Mais, parfois, les données sont plus grandes et donc elles sont tronquées.

J'ai essayé d'utiliser la méthode MeasureString, mais je n'ai pas récupéré les valeurs correctes. Est-il possible de voir quelle sera la taille de la chaîne, [longueur et hauteur], si elle doit être affichée dans un rectangle de largeur 100px. Je veux dire que la hauteur peut être augmentée mais pas la largeur, de sorte que je puisse utiliser la bonne hauteur de la corde pour la faire apparaître entièrement dans ce rectangle.

+0

De quelle plateforme s'agit-il? – RoToRa

+0

@RoToRa MeasureString est Windows –

+0

c'est la plate-forme .NET 3.5. – Mohit

Répondre

0

On dirait que vous avez deux problèmes distincts pour surmonter

  1. la chaîne de mesure avec précision. Pour cela voir TextRenderer.MeasureText, ce qui vous donnera la taille attendue en pixels. Une alternative serait de dessiner votre chaîne puis de la mesurer vous-même en recherchant les colonnes de gauche et de droite de l'image qui ne contiennent pas la couleur de votre texte. Vous pouvez utiliser GetPixel pour cela. Cette méthode nécessiterait plus de code, et ce serait plus lent, donc je ne le recommanderais pas.

  2. Maximiser la taille de votre chaîne dessinée pendant que l'ajustant dans une largeur de 100. Pour cela, vous pouvez simplement mesurer la chaîne dans une boucle pour trouver la taille de la police où elle dépasse 100px. Prends une estimation et travaille à partir de là.

+0

Le point n ° 2 n'est pas une option car cela rendrait le contrôle ayant des rectangles avec des tailles de police différentes. Je suppose que je dois regarder sur le No.1 et voir si le tit retourne le rectangle parfait pour y tracer une corde. – Mohit

+0

@Mohit - ne confondez pas la hauteur de votre chaîne dessinée avec la hauteur de l'image contenant cette chaîne dessinée. Je suppose que vous voulez faire la chaîne aussi large que possible jusqu'à 100px, sans changer le ratio d'aspect (largeur/hauteur) de la chaîne (l'image est fixée comme vous l'avez souligné). –

+0

Bonjour Ed. Désolé pour la réponse tardive. Je dois rendre la largeur du rectangle constante à 100 px et ajuster la hauteur pour afficher la chaîne complète à l'intérieur. J'ai utilisé TextRenderer.MeasureText mais je n'ai toujours pas obtenu le résultat souhaité. Je développe activement un contrôle qui affiche certaines chaînes dans des rectangles colorés. Ainsi, la chaîne doit s'afficher entièrement. – Mohit

Questions connexes