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 .

Était-ce utile?

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 est true - travail salissant -.
  • Lorsque je souhaite avoir le Width pour une chaîne spécifique, je le règle sur Label.Text .
  • Le Width de Label 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top