Comment puis-je convertir une longueur de chaîne en unité de pixel?
-
19-08-2019 - |
Question
J'ai une chaîne comme celle-ci:
string s = "This is my string";
Je crée un rapport Telerik et je dois définir une zone de texte
qui correspond à la largeur de ma chaîne. Cependant, la propriété de taille doit être définie sur une unité (pixel, point, pouce, etc.). Comment puis-je convertir la longueur de ma chaîne en, disons un pixel pour pouvoir régler la largeur?
EDIT: j'ai essayé d'obtenir une référence à l'objet graphique, mais cela se fait dans une classe qui hérite de Telerik.Reporting.Report
.
La solution
Sans utiliser de contrôle ni de formulaire:
using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
{
SizeF size = graphics.MeasureString("Hello there", new Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point));
}
Ou en VB.Net:
Using graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(New Bitmap(1, 1))
Dim size As SizeF = graphics.MeasureString("Hello there", New Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point))
End Using
Autres conseils
Size textSize = TextRenderer.MeasureText("How long am I?", font);
Dans ce cas, j'utilise généralement un moyen sale mais simple:
- J'ajoute une
étiquette
invisible indiquant que sa propriétéAutoSize
esttrue
- travail salissant -. - Lorsque je souhaite avoir le
Width
pour une chaîne spécifique, je le règle surLabel.Text
. - Le
Width
deLabel
me donnera la valeur correcte.
Dépend aussi de la police. La longueur de la chaîne ne suffit pas.
Vous pouvez créer une instance d'un objet graphique en utilisant la méthode MeasureString ()
. Mais vous devrez lui donner le nom de la police, sa taille et d’autres informations.