2009-04-06 13 views
15

J'ai une petite forme qui affiche des informations de progression.
Très rarement, je dois montrer un message assez long et je veux être en mesure de redimensionner ce formulaire lorsque cela est nécessaire afin que ce message s'intègre dans le formulaire.Comment déterminer la taille d'une chaîne donnée une police

Alors, comment puis-je savoir comment chaîne S sera rendue dans la police F?

Répondre

17

Cela dépend du moteur de rendu utilisé. Vous pouvez basculer entre GDI et GDI +. La commutation peut être fait en définissant la propriété UseCompatibleTextRendering en conséquence

Lorsque vous utilisez GDI + vous devez utiliser MeasureString:

string s = "A sample string"; 

SizeF size = e.Graphics.MeasureString(s, new Font("Arial", 24)); 

Lorsque vous utilisez GDI (à savoir le rendu Win32 natif), vous devez utiliser la classe TextRenderer:

SizeF size = TextRenderer.MeasureText(s, new Font("Arial", 24)); 

Voir cet article: Text Rendering: Build World-Ready Apps Using Complex Scripts In Windows Forms Controls

+0

Merci TextRenderer.MeasureText travaillé – Nifle

5

Que diriez-vous ceci:

Size stringsize = graphics.MeasureString("hello", myFont); 

(Here est le lien MSDN.)

0

Retour dans le Win32 j'utilisais l'équivalent pour la fonction VisualStyleRenderer :: GetTextExtent pour cela.

Questions connexes