C# 如何将字符串长度转换为像素单位?

C# 如何将字符串长度转换为像素单位?,c#,telerik,telerik-reporting,C#,Telerik,Telerik Reporting,我有这样一个字符串: string s = "This is my string"; 我正在创建Telerik报告,我需要定义一个文本框,它是我字符串的宽度。但是,size属性需要设置为单位(像素、点、英寸等)。如何将字符串长度转换为像素,以便设置宽度 编辑:我尝试获取图形对象的引用,但这是在继承自Telerik.Reporting.Report的类中完成的。您可以使用MeasureString()方法创建图形对象的实例。但是您需要将字体名称、字体大小和其他信息传递给它。也取决于字体。字符串长

我有这样一个字符串:

string s = "This is my string";
我正在创建Telerik报告,我需要定义一个
文本框
,它是我字符串的宽度。但是,size属性需要设置为单位(像素、点、英寸等)。如何将字符串长度转换为像素,以便设置宽度


编辑:我尝试获取图形对象的引用,但这是在继承自
Telerik.Reporting.Report
的类中完成的。您可以使用
MeasureString()
方法创建图形对象的实例。但是您需要将字体名称、字体大小和其他信息传递给它。

也取决于字体。字符串长度不足。

未使用控件或窗体:

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));
}
或在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

在这种情况下,我通常使用肮脏但简单的方法:

  • 我添加了一个不可见的
    标签
    ,它的
    AutoSize
    属性是
    true
    -脏工作-
  • 当我想为特定字符串设置
    宽度时,我将其设置为
    Label.Text
  • 标签的
    宽度将为我提供正确的值

我有字体名称、大小等。我看过MeasureString方法,但不知道如何创建图形对象引用。我没有任何形式或控制,我只是想在课堂上弄明白这一点。在我看来,测量应该是一种静态方法。@Kibbee
MeasureString
需要一个
Graphics
,因为它考虑了当前的图形转换。我相信
GraphicsUnit.Point
GraphicsUnit.Pixel
的大小不一样(不再)兄弟,真聪明!
Size textSize = TextRenderer.MeasureText("How long am I?", font);