web-dev-qa-db-fra.com

Comment puis-je convertir une longueur de chaîne en une unité de pixel?

J'ai une corde comme ceci:

string s = "This is my string";

Je crée un rapport Telerik et j'ai besoin de définir un textbox c'est la largeur de ma chaîne. Cependant, la propriété de taille doit être réglée sur une unité (pixel, point, pouce, etc.). Comment puis-je convertir ma longueur de chaîne en, disons un pixel afin que je puisse 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.

26
ScottG

Sans utiliser d'un contrôle ou d'une forme:

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 dans 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
60
Tom Anderson
Size textSize = TextRenderer.MeasureText("How long am I?", font);
20
Wachburn

Dans ce cas, j'utilise habituellement une manière sale, mais simple:

  • J'ajoute un invisible Label que sa propriété AutoSize est true -Dirty Work -.
  • Lorsque je veux avoir le Width pour une chaîne spécifique, je l'ai défini sur le Label.Text.
  • Le Width du Label me donnera la valeur correcte.
12
shA.t

Vous pouvez créer une instance d'un objet graphique à utiliser la méthode MeasureString(). Mais vous devrez transmettre le nom de police, la taille de la police et d'autres informations.

4
Mitchel Sellers

Dépend de la police aussi. La longueur de la chaîne n'est pas suffisante.

4
duffymo